您的位置:首页 > 移动开发 > Unity3D

Unity 3D - 旋转

2016-10-10 13:51 375 查看
方法1:物体绕Y轴旋转30度。

transform.rotation *= Quaternion.AngleAxis(30, Vector3.up);

或者

transform.localEulerAngles += new Vector3(0, 30, 0);

方法2:设置Y角度为30度。

transform.rotation = Quaternion.AngleAxis(30, Vector3.up);

或者

float x = transform.localEulerAngles.x;

float z = transform.localEulerAngles.z;

transform.localEulerAngles = new Vector3(x, 30, z);

方法3:让物体Y轴角度直接增加30度。

Quaternion qua = Quaternion.Euler(0f,30f,0f) * transform.rotation;

transform.rotation = qua;

方法4:让物体绕Y轴旋转30度。有旋转过程

Quaternion qua; public float RotationSpeed=0.1f;//旋转速度.

float t;

void Start ()

{

qua = Quaternion.Euler(0f,30f,0f) * transform.rotation;

}

void Update ()

{

t = RotationSpeed / Quaternion.Angle (transform.rotation, qua) * Time.deltaTime;

transform.rotation = Quaternion.Slerp (transform.rotation, qua,t);

}

方法5:让物体绕Y轴旋转面向一个点,有旋转过程

Quaternion targetRotation;

public float RotationSpeed = 50f;//旋转速度.

public Vector3 targetPoint;//要旋转面向的点.

void Start()

{

targetRotation = Quaternion.LookRotation(targetPoint - transform.position);

}

void Update()

{

this.transform.rotation = Quaternion.Lerp(this.transform.rotation, targetRotation, Time.deltaTime * RotationSpeed);

}

总结:

四元数A * 四元数B = B * A (满足交换律):将A(B)的旋转递增B(A)的旋转。

有过程的旋转,需要计算出目标的四元数,之后运用 Quaternion.Slerp 或者 Quaternion.Lerp
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: