Unity3d 统一轮换问题
我试着让一个模型在按下按钮时旋转90度——应该很简单,对吧? 嗯,由于一些奇怪的原因,整个系统是一团混乱。如果能帮我修一下,我将不胜感激Unity3d 统一轮换问题,unity3d,rotation,transform,Unity3d,Rotation,Transform,我试着让一个模型在按下按钮时旋转90度——应该很简单,对吧? 嗯,由于一些奇怪的原因,整个系统是一团混乱。如果能帮我修一下,我将不胜感激 transform.parent.rotation = Quaternion.Euler(transform.parent.rotation.x, transform.parent.rotation.y , transform.parent.rotation.z); 相反,模型只是在随机方向上旋转,似乎它们根本不应该与我的代码相关 我启动游戏,在游戏模
transform.parent.rotation = Quaternion.Euler(transform.parent.rotation.x, transform.parent.rotation.y , transform.parent.rotation.z);
相反,模型只是在随机方向上旋转,似乎它们根本不应该与我的代码相关
我启动游戏,在游戏模式下旋转模型,但旋转的方式似乎突然改变了
我真的被这搞糊涂了&如果您的代码不能像您想象的那样工作,我将非常感谢您的帮助
transform.parent.rotation = Quaternion.Euler(transform.parent.rotation.x, transform.parent.rotation.y , transform.parent.rotation.z);
Quaterinion.Euler
期望以Euler角的形式输入,但您输入的是由(x,y,z)
组成的Quaterinion的(x,y,z,w)
,这就是为什么您会得到非常时髦的旋转
要获取变换的当前Euler角度,只需使用transform.eulerAngles
(或者在您的示例中使用transform.parent.eulerAngles
)
然而,这无论如何都不会改变旋转。
如果要绕Y轴旋转90度,可以这样添加90度
var euler = transform.parent.eulerAngles;
transform.parent.rotation = Quaternion.Euler(euler.x, euler.y+90, euler.z);
当然,绕Y旋转90度更简单的方法是
transform.Rotate(0, 90, 0);
你的代码不像你想的那样工作
Quaterinion.Euler
期望以Euler角的形式输入,但您输入的是由(x,y,z)
组成的Quaterinion的(x,y,z,w)
,这就是为什么您会得到非常时髦的旋转
要获取变换的当前Euler角度,只需使用transform.eulerAngles
(或者在您的示例中使用transform.parent.eulerAngles
)
然而,这无论如何都不会改变旋转。
如果要绕Y轴旋转90度,可以这样添加90度
var euler = transform.parent.eulerAngles;
transform.parent.rotation = Quaternion.Euler(euler.x, euler.y+90, euler.z);
当然,绕Y旋转90度更简单的方法是
transform.Rotate(0, 90, 0);
变换。旋转(0,90,0);变换。旋转(0,90,0);