gpt4 book ai didi

c# - Unity3d - eulerAngles(局部和全局)与检查器中的完全不同

转载 作者:行者123 更新时间:2023-11-30 16:48:09 26 4
gpt4 key购买 nike

在游戏对象的检查器中,我使用的起始旋转是“-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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com