Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/unity3d/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Unity3d-与';完全不同的eulerAngles(本地和全局);督察_C#_Unity3d_Quaternions_Euler Angles - Fatal编程技术网

C# Unity3d-与';完全不同的eulerAngles(本地和全局);督察

C# Unity3d-与';完全不同的eulerAngles(本地和全局);督察,c#,unity3d,quaternions,euler-angles,C#,Unity3d,Quaternions,Euler Angles,在游戏对象的检查器中,我使用的起始旋转是“-90”,但当我运行print(transform.eulerAngles.x)时,我得到270(transform.localEulerAngles.x与transform.localEulerAngles.x相同) 如果我向下倾斜游戏对象,inspector X值会变得更大(比如说,到-85)。打印的transform.eulerAngles.x也变得更大,比如说274 这里是事情变得奇怪的地方: 如果我向上倾斜gameObject,检查器x坐标会变

在游戏对象的检查器中,我使用的起始旋转是“-90”,但当我运行
print(transform.eulerAngles.x)
时,我得到270(transform.localEulerAngles.x与
transform.localEulerAngles.x相同)

如果我向下倾斜
游戏对象
,inspector X值会变得更大(比如说,到-85)。打印的
transform.eulerAngles.x
也变得更大,比如说274

这里是事情变得奇怪的地方:

如果我向上倾斜
gameObject
,检查器x坐标会变小(例如,变为-95),但打印的
eulerAngle.x
值会变大(这里变为274)。因此,如果我将对象从
eulerAngle.x
为270向上或向下旋转,那么x值无论如何都会增加


我在这里肯定做错了什么,但是经过很多故障排除,我仍然不知道是什么。有什么想法吗?

在Unity3D中,颂词是一个复杂的过程。您不应在inspector或代码中增加/减少或设置值。应仅使用绝对值来读取和设置它

不要增加或减少这些值,因为当角度超过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);
    }
}
这直接取自文件:

还可以转换、旋转文档:


当你记录它时,检查员几乎总是给你一个时髦的值。唯一的一致性就是打印(transform.rotation)。对于
transform.eulerAngles
transform.localEulerAngles
中的每个值,如果其具有父项,则应在检查器和代码中保留类似的值:-

if (value > 270)
    value =- 360;

游戏对象是另一个游戏对象的子对象吗?不是/unity文档中反复解释了这一点。只需使用“旋转”。就是这么简单。试着用“旋转”恐怕没那么简单。。。那也不行……我已经看过文档了。我没有增加或减少值,只是读取它们。编辑:另外,关于打印的部分(transform.rotation)不正确。transform是一个四元数,因此打印它将只提供x、y、z、w四元数值,而不是eulerAngles。请尝试记录transform.rotation.eulerAngles.x。对于转换。旋转。EulrLang.x和Trime.Euler-Lang.x,Doto to LoaleuleRangLas.Xi想知道打印的Euler-Lang.x值是否使用不同的空间与检查器。我有一个有趣的事情要尝试。也许可以将变换的eulerangle保存在一个具有公共作用域的Vector3变量中,以便您可以在inspector中看到它。在Update()中输出变量以跟踪它,并在inspector中查看它们是否相关。