在gameObject的检查器中,我使用的起始旋转角度是“ -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)。这应该在检查器和代码之间保留相似的值。
关于c# - Unity3d-EulerAngles(本地和全局)与检查器中的完全不同,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38509472/