【发布时间】:2022-10-18 23:11:53
【问题描述】:
我目前对 Unity 中的旋转(和 eulerAngles)如何工作感到非常困惑,我觉得我缺少一些基本的东西。
我有一个游戏对象Emma,它有一个不断打印出旋转的脚本(mainObject 指向Emma 对象):
"emma1 x=" + this.transform.eulerAngles.x + " y=" + this.transform.eulerAngles.y + " z=" + this.transform.eulerAngles.z);
"emma2 x=" + mainObject.transform.rotation.eulerAngles.x + " y=" + mainObject.transform.rotation.eulerAngles.y + " z=" + mainObject.transform.rotation.eulerAngles.z);
"emma3 x=" + mainObject.transform.rotation.x + " y=" + mainObject.transform.rotation.y + " z=" + mainObject.transform.rotation.z);
"emma4 x=" + mainObject.transform.localEulerAngles.x + " y=" + mainObject.transform.localEulerAngles.y + " z=" + mainObject.transform.localEulerAngles.z);
在编辑器中,我将Emma 旋转为x=235 y=20 z=70。
但是,输出变为x=305 y=200 z=250。
不管我如何旋转Emma,编辑器值对我来说都是有意义的,但打印输出对我来说是可以理解的。
另一个示例是编辑器x=250 y=180 z=100,但输出变为x=290 y=5 z=280。
即使我在编辑器中旋转一个轴,例如脚本中的 x,所有 3 个轴都可以更改 (x, z, y),这对我来说毫无意义。
我的根本问题是;我希望通过脚本能够将 Emma 旋转到特定方向(比如朝向公寓的门)。我可以通过在编辑器中旋转 Emma 来计算出这些值,但如果我不能通过脚本应用这些值,那么还有什么方法可以做到这一点。
所以我的问题是:
- 为什么它们不同?我在某处读到编辑器显示
localEulerAngles,但显然这不是真的。 - 如何在脚本中打印编辑器中显示的值?我没有使用正确的功能吗?
- 如果我想在编辑器中显示特定方向,我应该使用哪些函数来设置该旋转?
【问题讨论】: