首页 > 解决方案 > Unity返回不正确的transform.rotation

问题描述

在我正在创造的无尽奔跑游戏中,有一种机制叫做跳板。它基本上接受自上一帧以来玩家位置的变化并将其转换为角度。然后它使用它和transform.rotation跳板的 来确定将玩家移动到哪个方向,就好像它实际上是从它弹跳一样。

除了一个问题:Unity 正在读取不正确的transform.rotation. 当跳板旋转 45 度时,读数为 21.92615(乘以 后Mathf.Rad2Deg)。当跳板旋转 20 度时,读数为 9.949307。

起初我以为它由于某种原因被乘以一个未知常数,但在通过计算器应用程序检查后,我发现情况并非如此。经过更多的实验,我发现可能的“未知常数”虽然足够接近,但似乎确实有一个从大约 2 到大约 2.1 的范围。虽然我不知道这是如何发生的,但它似乎确实非常一致。

所以我的问题是:我面临的这个问题是什么,有什么办法可以解决吗?
简短的旁注:我知道这不是代码的其他问题,因为我将其剥离到最低限度:

public void OnTriggerEnter2D(Collider2D collision){
    Debug.Log(collision.gameObject.transform.rotation.z * Mathf.Rad2Deg);
}

标签: unity3d

解决方案


好的。在查找了脚本 APItransform.rotation并弄乱了一些之后,我发现它正在返回四元数的 z 值,并使用.ToEulerAngles()调用修复了它。


推荐阅读