c# - 复制和应用旋转值的问题
问题描述
我将模型的旋转值复制到 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_;
}
解决方案
四元数有 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
推荐阅读
- arrays - 快速使用任何元素类型是一种好习惯吗?
- spring-batch - 在Spring-XD作业模块中,如何在运行XD容器的两台服务器中分别向同一路径下的两个文件写入数据?
- python - TensorFlow:Dataset 的 apply 方法的简单自定义 transformation_func 的示例实现
- php - 单词“ART”正在转换为时间戳
- python - 在 webfaction 中托管 django
- python - 如果我有一个登录窗口并想在登录后访问另一个窗口,我需要在其中使用另一个 def 吗
- android - 在带有自签名证书的 Android 9 中得到 SSLPeerUnverifiedException Hostname 196.1X.3X.X2 not verify 错误,但在所有其他版本中都有效
- go - golang中使用bufio.Scanner时如何继续执行程序
- random - 如何给全局一个不包括0的随机数
- c - 循环时无法比较数组上的字符串