在游戏对象的检查器中,我使用的起始旋转是“-90”,但是当我运行时print(transform.eulerAngles.x)
我得到 270 (同上transform.localEulerAngles.x
).
如果我倾斜gameObject
向下,检查器 X 值会按其应有的方式变大(例如,变为 -85)。印刷的transform.eulerAngles.x
也变得更大,比如说274。
这就是事情变得奇怪的地方:
如果我倾斜gameObject
向上,检查器 x 坐标变小(例如,到 -95),正如它应该的那样,但是打印的eulerAngle.x
值变得更大(这里是 274)。因此,如果我从eulerAngle.x
为 270 时,x 值无论如何都会增加。
我肯定在这里做错了什么,但经过大量故障排除后我仍然不知道是什么。有什么想法吗?
eulerAngles 是 Unity3D 中的一个复杂过程。您永远不应该在检查器中或通过代码递增/递减或设置值。应该只使用绝对值来读取和设置它。
不要增加或减少这些值,因为当角度超过 360 度时就会失败。您可以使用 Transform.Rotate 来代替。
以下是Unity3D文档示例中的示例代码:
using UnityEngine;
using System.Collections;
public class ExampleClass : MonoBehaviour {
public float yRotation = 5.0F;
void Update() {
yRotation += Input.GetAxis("Horizontal");
transform.eulerAngles = new Vector3(10, yRotation, 0);
}
void Example() {
print(transform.eulerAngles.x);
print(transform.eulerAngles.y);
print(transform.eulerAngles.z);
}
}
这直接取自文档:https://docs.unity3d.com/ScriptReference/Transform-eulerAngles.html
还有 Transform.Rotate 文档:https://docs.unity3d.com/ScriptReference/Transform.Rotate.html
当你记录它时,检查员几乎总是会给你一个时髦的值。您将获得的唯一一致性是 print(transform.rotation)。这应该在检查器和代码中保留相似的值。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)