unity物体自身轴旋转_Unity 中物体的旋转

准备工作

建三个 Cube,并设置好父子关系,先把三个物体的旋转都归零。

4c4497149dfc

层级结构

4c4497149dfc

场景视图

让物体绕自己的某一个轴旋转

代码如下:

using UnityEngine;

public class NewBehaviourScript : MonoBehaviour

{

public Transform childCube1;

public Transform childCube2;

void Update()

{

Quaternion rotU = Quaternion.AngleAxis(100 * Time.deltaTime, Vector3.up);

childCube1.transform.rotation = childCube1.transform.rotation * rotU;

childCube2.transform.localRotation = childCube2.transform.localRotation * rotU;

}

}

还是保持三个 Cube 旋转都为 0,可以看到两个子物体是绕着自己的 up 轴旋转的。

4c4497149dfc

旋转都为 0 的时候

将两个子物体的旋转的 x 轴改为 45,可以看到两个子物体是绕着自己的 up 轴旋转的。

4c4497149dfc

子物体 x 轴旋转为 45

将父物体的旋转 x 轴也改成 45,可以看到两个子物体还是绕着自己的 up 轴旋转的。

4c4497149dfc

父物体、子物体的 x 轴都是 45

让物体绕世界坐标轴旋转

还是保持三个 Cube 旋转都为 0,可以看到子物体是绕着世界 up 轴旋转的。

4c4497149dfc

旋转都为 0 的时候

将子物体的旋转的 x 轴改为 45,并把显示的坐标轴从 Local 变成 Global,可以看到子物体依然绕着世界 up 轴旋转。

4c4497149dfc

子物体 x 轴旋转为 45

将父物体的旋转 x 轴也改成 45,可以看到子物体依然绕着世界 up 轴旋转。

4c4497149dfc

父物体、子物体的 x 轴都是 45

让物体绕父物体某一个轴旋转

代码如下:

using UnityEngine;

public class NewBehaviourScript : MonoBehaviour

{

public Transform childCube1;

void Update()

{

Quaternion rotU = Quaternion.AngleAxis(200 * Time.deltaTime, Vector3.up);

childCube1.transform.localRotation = rotU * childCube1.transform.localRotation;

}

}

将父物体的 x 轴旋转设置为 90,将子物体的 x 轴旋转设置为 -90,可以看到子物体是按照父物体的 up 轴进行旋转的。

4c4497149dfc

父物体的 x 轴旋转设置为 90,子物体的 x 轴旋转设置为 -90

总结

所有的旋转都是顺时针的。

参考


版权声明:本文为weixin_30320587原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。