在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/

10-11 10:44