在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值。
我在这里肯定做错了,但经过大量的故障排除后,我仍然无法弄清楚是什么。有什么想法吗?
答案 0 :(得分:2)
eulerAngles是Unity3D中一个复杂的过程。您永远不应在检查器中或通过代码递增/递减或设置值。应该只使用绝对值来读取和设置它。
不要递增或递减值,因为当角度超过360度时它会失败。转换就是您使用的转换。
以下是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)。这应该在检查员和代码中保留类似的值。
答案 1 :(得分:0)
表示transform.eulerAngles
或transform.localEulerAngles
中的每个值,如果它有父级: -
if (value > 270)
value =- 360;