c# - 仅在一侧缩放游戏对象

标签 c# unity3d

我已将立方体添加到场景中并缩放并放置到位置 ( 0, 0, 0 )。 我正在使用附加到多维数据集的代码缩放该多维数据集

IEnumerator Start() {
    StartCoroutine("DoSomething", 2.0F);
    yield return new WaitForSeconds(1);
    StopCoroutine("DoSomething");
}

IEnumerator DoSomething(float someParameter) {
    while (true) {
        transform.localScale += new Vector3(0, 0.1f, 0);
        yield return null;
    }
}

但立方体在两侧缩放,顶部和底部。我想用相同的系数缩放,但立方体的底部保持在相同的位置。 我试图在 transform.localScale += new Vector3(0, 0.1f, 0);yield return null; 之间设置新位置,但我不知道如何得到确切的数量。 (我试着阅读

Mesh planeMesh = gameObject.GetComponent<MeshFilter>().mesh;
        Bounds bounds = planeMesh.bounds;
        bounds.size.y;

前后缩放并添加到

transform.position.y 之间的区别 boundsAfter.size.yboundsBefore.size.y

但它移动太多了。

如何解决?

最佳答案

您实际上可以通过两种方式做到这一点。

方法一:

从外部应用程序更改枢轴点。

在 Maya 等 3D 软件中创建一个简单的立方体,然后将轴心点定位到立方体的底部,然后将其导出到 Unity。这应该开箱即用。

方法 2:

将立方体作为空游戏对象的父级。

步骤:

A.创建一个空的游戏对象。

B。将新游戏对象移动到立方体的位置,然后将该新游戏对象的 y 轴移动到立方体的底部。必须通过放大来精确定位 y 坐标。有关详细信息,请参见下面的动画。

C。现在将 Cube 拖到那个新的 GameObject,立方体应该是那个新 GameObject 的 child。您现在可以将问题中的脚本附加到那个新的 GameObject 并且它应该只在一侧缩放立方体。不要忘记删除直接附加到多维数据集的旧缩放脚本。

图像教程。高质量版here .

enter image description here

关于c# - 仅在一侧缩放游戏对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39216454/

相关文章:

c# - 如何将 "type here"消息添加到 WPF 文本框?

visual-studio - Unity 找不到任何受支持的 Visual Studio 安装

unity3d - 如何使铰接接头更坚固

unity3d - Unity 脚本不继承可以管理脚本的原生类

c# - 使用 MaskedTextBox 实现日期时间选择器功能。使用 RegEx 完成验证

c# - 冒泡事件的首选方式是什么?

c# - 重复的 if 语句常量是 "reused"吗? C# .NET

c# - 使用 MVVM 模式从 View 模型到 WPF 中的 View 的条件绑定(bind)

c# - 在 C# Unity 中获取实时视频流

c# - 如何知道哪个碰撞器在 Unity 中触发了对 OnTriggerEnter 的调用(在具有多个碰撞器的游戏对象上)