仅在一侧缩放游戏对象

Pao*_*aJ. 2 c# unity-game-engine unity5

我已将多维数据集添加到场景,并且缩放并放置到位置(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;
    }
}
Run Code Online (Sandbox Code Playgroud)

但是多维数据集在两边都缩放,从顶部到底部。我想使用相同的因子进行缩放,但是Cube的底部保持在相同的位置。我试图在transform.localScale += new Vector3(0, 0.1f, 0);和之间设置新的头寸,yield return null;但我不知道如何获得确切的金额。(我试图阅读

Mesh planeMesh = gameObject.GetComponent<MeshFilter>().mesh;
        Bounds bounds = planeMesh.bounds;
        bounds.size.y;
Run Code Online (Sandbox Code Playgroud)

缩放之前和之后并添加到

transform.position.yboundsAfter.size.y和之间的区别 boundsBefore.size.y

但它移动太多。

如何解决呢?

Pro*_*mer 5

您实际上可以通过两种方式执行此操作。

方法1

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

在3D软件(例如Maya)中创建一个简单的多维数据集,然后将枢轴点定位到多维数据集的底部,然后将其导出到Unity。这应该开箱即用。

方法2

将多维数据集父级绑定到一个空的GameObject。

步骤

A.创建一个空的GameObject。

B。将新的GameObject移至多维数据集的位置,然后将新的GameObject的y轴移至多维数据集的底部。必须通过放大来精确定位y-pos。有关更多信息,请参见下面的动画。

C。现在将多维数据集拖动到新的GameObject,并且多维数据集应该是该新GameObject 的子级。现在,您可以将问题中的脚本附加到该新GameObject上,并且该脚本仅应在一侧缩放多维数据集。不要忘记删除直接附加到多维数据集的旧缩放脚本。

图像教程。高品质的版本在这里

在此处输入图片说明