如何将 transform.eulerAngles 更改为四元数
how to chagne transform.eulerAngles to quaternion
我让相机旋转来观察一个物体
鼠标左键旋转部分
if (Input.GetMouseButton(0))
{
xMovement = Input.GetAxis("Mouse X");
yMovement = Input.GetAxis("Mouse Y");
//1
//Quaternion qurEuler = Quaternion.Euler
// (new Vector3(-yRotation, xRotation, 0));
//Quaternion quaternion = transform.rotation;
//
//2
//transform.rotation = (quaternion * qurEuler);
//3
// transform.rotation *= Quaternion.AngleAxis(1, new Vector3(-yRotation, xRotation, 0));
//4
//transform.Rotate(-yRotation, xRotation, 0);
//i use this
transform.eulerAngles += new Vector3(-yRotation, xRotation, 0);
}
但是这种方式有云台锁。
1 , 2 , 3 ,4 方式不舒服
旋转对象后,无法尝试将对象恢复到其原始旋转。
transform.eulerAngles += new Vector3(-yRotation, xRotation, 0) 可以恢复旋转
我想知道什么四元数使用与 transform.eulerAngles
相同的方法
如果您想使用四元数来完成与您的 transform.eulerAngles += new Vector3(-yRotation, xRotation, 0);
方法相同的事情,您必须在全局轴中应用 Y 轴旋转,然后在局部轴中应用 X 轴旋转:
if (Input.GetMouseButton(0))
{
xMovement = Input.GetAxis("Mouse X");
yMovement = Input.GetAxis("Mouse Y");
Quaternion yRot = Quaternion.Euler(0f, xMovement, 0f);
Quaternion xRot = Quaternion.Euler(-yMovement, 0f, 0f);
transform.rotation = yRot * transform.rotation * xRot;
// ...
有关如何使用四元数乘法的更多信息,请参阅。
我让相机旋转来观察一个物体
鼠标左键旋转部分
if (Input.GetMouseButton(0))
{
xMovement = Input.GetAxis("Mouse X");
yMovement = Input.GetAxis("Mouse Y");
//1
//Quaternion qurEuler = Quaternion.Euler
// (new Vector3(-yRotation, xRotation, 0));
//Quaternion quaternion = transform.rotation;
//
//2
//transform.rotation = (quaternion * qurEuler);
//3
// transform.rotation *= Quaternion.AngleAxis(1, new Vector3(-yRotation, xRotation, 0));
//4
//transform.Rotate(-yRotation, xRotation, 0);
//i use this
transform.eulerAngles += new Vector3(-yRotation, xRotation, 0);
}
但是这种方式有云台锁。 1 , 2 , 3 ,4 方式不舒服
旋转对象后,无法尝试将对象恢复到其原始旋转。 transform.eulerAngles += new Vector3(-yRotation, xRotation, 0) 可以恢复旋转 我想知道什么四元数使用与 transform.eulerAngles
相同的方法如果您想使用四元数来完成与您的 transform.eulerAngles += new Vector3(-yRotation, xRotation, 0);
方法相同的事情,您必须在全局轴中应用 Y 轴旋转,然后在局部轴中应用 X 轴旋转:
if (Input.GetMouseButton(0))
{
xMovement = Input.GetAxis("Mouse X");
yMovement = Input.GetAxis("Mouse Y");
Quaternion yRot = Quaternion.Euler(0f, xMovement, 0f);
Quaternion xRot = Quaternion.Euler(-yMovement, 0f, 0f);
transform.rotation = yRot * transform.rotation * xRot;
// ...
有关如何使用四元数乘法的更多信息,请参阅