Unity3D中的儿童轮换

时间:2013-08-08 18:46:22

标签: rotation unity3d

当我遇到一个奇怪的问题时,我正在尝试Unity3d:

我创建了一个空对象A及其子对象多维数据集B.

A的属性: 位置 - (0,0,0) Rotation-(0,0,0) 横向扩展(1,1,1)

B的属性: 位置 - (0,2,0) Rotation-(0,0,0) 横向扩展(1,4,1)

我制作了一个包含Transform对象的C#脚本。它仅使用transform.localrotation沿z轴旋转。 问题是,如果在Unity编辑器中我将A附加为变换,B似乎沿着其中一个角旋转(我不知道该角是如何选择的)如果我附加B,它似乎沿着它的中心旋转。 我不明白为什么会这样?我知道在localrotation中,会考虑父轮换。但是A和B的初始旋转都是零,所以它无关紧要。

1 个答案:

答案 0 :(得分:2)

如果直接修改transform.localRotation,则表示您正在修改四元数。

通常,您不应直接修改四元数:

  

Tthey(原文!)基于复数,并且不易直观理解。您几乎从不访问或修改单个Quaternion组件(x,y,z,w);最常见的是你只需要进行现有的旋转(例如从变换中)并使用它们来构造新的旋转(例如,在两次旋转之间平滑插值)。

取自unity3d doc:http://docs.unity3d.com/Documentation/ScriptReference/Quaternion.html

尝试使用transform.Rotate()transform.localEulerAngles。这应该可以解决您的问题。

http://docs.unity3d.com/Documentation/ScriptReference/Transform-localEulerAngles.html http://docs.unity3d.com/Documentation/ScriptReference/Transform.Rotate.html