为什么当我将层次结构中的对象移动为子对象时,整个对象的变换会发生变化?

时间:2016-11-09 22:32:08

标签: unity3d

这是Platform和Button不是Elevator的子对象时的屏幕截图。这就是每个对象变换的方式。

Not child

然后我将物体拖动为电梯的孩子:

Childs of elevator

我没有改变对象变换中的任何内容而不是旋转和位置不缩放。我只是想把它们放在电梯下面。

电梯是大立方体。

The terrain Transform: Position and Rotation 0 0 0 Scale 1 1 1

The elevator position: x = 263.05 y = 0.1 z = 148.32
             rotation: x = -2.065 y = 19.039 z = -89.252
             scale x = 0.1 y = 5 z = 2

The button when child: x = -4.0700 y = 0.72499 z = -0.5510
                       x = -36.49  y = 2.436   z = 96.1960
                       x = 0.22    y = 10.13   z = 0.19

When the button is not child: x = 266.106 y = 0.514 z = 146.082
                       x = -0.082  y = 55   z = 6.9
                       x = 0.8    y = 1.6   z = 0.5

1 个答案:

答案 0 :(得分:1)

那是因为游戏对象转换为scene graph。这意味着游戏对象的最终位置是通过从根到游戏对象的深度优先遍历中所有变换的累积来给出的。

因此,当您将胶囊和立方体移动到电梯时#34;子树,您间接设置在电梯"中设置的非均匀比例。子树根通过上面解释的变换累积过程。

编辑:

要快速解决您的问题,请创建一个新的游戏对象并将其设置为其他所有人(电梯,按钮和平台)的父级。我想你想要一些同时适用于所有人的动画。如果是这样,那就可以了。