Unity轮换问题

时间:2018-07-11 03:29:39

标签: unity3d rotation transform

我正在尝试让模型在按下按钮时旋转90度-应该简单吧? 好吧,由于某些奇怪的原因,整个系统都是一片混乱。我会很乐意为您解决问题

transform.parent.rotation = Quaternion.Euler(transform.parent.rotation.x, transform.parent.rotation.y , transform.parent.rotation.z);   

相反,模型只是沿随机方向旋转,似乎它们根本不应该与我的代码相关。

我启动了游戏以在游戏模式下旋转模型,但是旋转的方式似乎突然变成了蓝色。

我对此感到非常困惑,并且希望能为您提供一些帮助

1 个答案:

答案 0 :(得分:2)

您的代码无法按照您的想法工作。

Quaterinion.Euler期望以欧拉角的形式输入,但是您正在输入由(x,y,z)组成的Quaterinon的(x,y,z,w),这就是为什么您得到真正时髦的旋转的原因。

https://docs.unity3d.com/ScriptReference/Quaternion.html

要获取当前变换的欧拉角,只需使用transform.eulerAngles(或者在您的情况下为transform.parent.eulerAngles

var euler = transform.parent.eulerAngles;
transform.parent.rotation = Quaternion.Euler(euler.x, euler.y, euler.z);

但是无论如何这不会改变旋转。 如果您想绕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);