当前位置: 首页 > 编程语言 > C#

Unity3d-eulerAngles(localandglobal)arecompletelydifferentfromtheinspector分享

时间:2023-04-10 21:49:56 C#

Unity3d-eulerAngles(localandglobal)arecompletelydifferentfromtheinspector在gameObject的inspector中,我使用的起始旋转是“-90”,但是当我运行print(transform.eulerAngles.x)时,我得到270(也是transform.localEulerAngles.x)。如果我向下倾斜游戏对象,检查器X值会变大(例如,到-85)。打印的transform.eulerAngles.x也变大了,比如274。事情变得很奇怪:如果我向上倾斜游戏对象,检查器x坐标变小(例如,到-95),但它应该是,但是打印的eulerAngle.x值变为eulerAngle.x(此处为274)。因此,如果我将对象从270的eulerAngle.x向上或向下旋转,x值会增加。我肯定在这里做错了什么,但经过大量故障排除后我仍然无法弄清楚是什么。有任何想法吗?eulerAngles在Unity3D中是一个复杂的过程。您永远不应在检查器中或通过代码递增/递减或设置值。只能使用绝对值读取和设置它。不要增加或减少该值,因为当角度超过360度时它将失败。Transform.Rotate是您使用的。以下是Unity3D文档示例中的示例代码:使用UnityEngine;使用系统集合;publicclassExampleClass:MonoBehaviour{publicfloatyRotation=5.0F;voidUpdate(){yRotation+=Input.GetAxis("水平");转换。eulerAngles=newVector3(10,yRotation,0);}voidExample(){print(transform.eulerAngles.x);打印(transform.eulerAngles.y);打印(transform.eulerAngles.z);这可以直接从文档中获取:https://docs.unity3d.com/ScriptReference/Transform-eulerAngles.html还有Transform.Rotate文档:https://docs.unity3d.com/ScriptReference/Transform.Rotate.html当你记录它时,检查器几乎总是会给你一个时髦的值。您将获得的唯一一致性是print(transform.rotation)。这应该在检查器和代码中保留相似的值。对于transform.eulerAngles或transform.localEulerAngles的每个值,如果它有一个父级:-以上是C#学习教程:Unity3d-eulerAngles(本地和全局)与检查器完全不同如果它对大家有用,我分享需要了解更多C#学习教程,希望大家多多关注——if(value>270)value=-360;如需转载请注明出处: