从当地欧拉角

时间:2017-04-24 10:19:30

标签: c# unity3d quaternions

我试图从一个旋转到另一个。另一个轮换使用此

构成
 Quaternion qNew = Quaternion.Euler(new Vector3(navigationCanvas.transform.rotation.x, navigationCanvas.transform.rotation.y, camRotationToWatch.transform.rotation.z)); 

上面给出了我需要lerp的新旋转,这是对的吗?因为它没有做我的意思 而我正在这样哄骗

 navigationCanvas.transform.rotation = Quaternion.Lerp(navigationCanvas.transform.rotation, qNew, Time.deltaTime * 2f);

1 个答案:

答案 0 :(得分:2)

默认情况下,Unity uses quaternion to express rotation以防止云台锁定,因此transform.rotation 已经是四元数

  

Transform.rotation

     

<强>描述

     

世界空间中变换的旋转存储为四元数。

您必须改为使用eulerAngles property

Quaternion qNew = Quaternion.Euler( new Vector3(
    navigationCanvas.transform.eulerAngles.x,
    navigationCanvas.transform.eulerAngles.y,
    camRotationToWatch.transform.eulerAngles.z
));