Unity:在世界空间中扩展GameObject

时间:2017-12-06 07:38:11

标签: unity3d matrix scale

我正在努力实现这一目标:

enter image description here

这是一个非轴对齐的立方体,在Z轴(Y在Unity中)的搅拌器中在世界空间中缩放。我想在Unity中实现同样的目标。我试图为此找到公式,但没有运气,我知道我可以将我的对象父对象另一个GameObject并缩放父对象,但是一旦我取消原来的GameObject,比例就会重新缩小,我需要缩放原始的GameObject。任何建议都会非常感激。

2 个答案:

答案 0 :(得分:0)

您既可以取消它,也可以将其缩小然后重新显示,或者您可以创建将这两个对象分开保存的游戏对象,以便它们都有自己的比例。

void Rescale(Transform obj, Vector3 newScale)
{
    if(obj.root != obj)
    {
        Transform parent = obj.parent;
        obj.SetParent(null);
        obj.localScale = newScale;
        obj.SetParent(parent, true);
    }
}

答案 1 :(得分:0)

您可以使用此函数将比例(Vector3)从世界空间转换为本地空间:

transform.parent.InverseTransformVector(worldScale)

要向您的多维数据集应用正确的比例,您可以执行以下操作:

cube.transform.localScale = cube.transform.parent.InverseTransformVector(worldScale);