首页 > 解决方案 > 复制和应用旋转值的问题

问题描述

我将模型的旋转值复制到 Vector3 中,然后将其重新应用回我的模型,旋转值完全改变。

例如,我的模型的旋转为(-180, 0, 0). 然后我将它复制到 Vector3,模型的旋转不会被复制。它显示为(0, 0, 0)。之后,我终于将旋转添加回我的模型,并且我的模型的旋转变为(0, 180, 0). 它有什么问题?

public GameObject myModel;
public Vector3 rotationValues_;

public void Start(){
   rotationValues_ = myModel.transform.eulerAngles;
}

public void ResetValue(){
   myModel.transform.eulerAngles = rotationValues_;
}

标签: c#unity3d

解决方案


四元数有 4 个轴而不是 3 个轴,简单的解决方案是将旋转数据存储为一个Quaternion类而不是一个Vector3.

public GameObject myModel;
public Quaternion rotationValues_;

public void Start(){
   rotationValues_ = myModel.transform.rotation;
}

public void ResetValue(){
   myModel.transform.rotation = rotationValues_;
}

如果您确实需要存储这些值,请使用:

myModel.transform.rotation.eulerAngles

推荐阅读