Unity返回了错误的transform.rotation

时间:2019-03-14 00:47:04

标签: unity3d

在我正在创造的无尽奔跑游戏中,有一个机制叫做跳板。它基本上吸收了自上一帧以来玩家位置的变化,并将其转换为角度。然后,它与跳板的transform.rotation一起使用,以找出将播放器移入的方向,就好像它实际上是从其弹起一样。

除一个问题外,该算法可以正常运行:Unity读取了错误的transform.rotation。当跳板旋转45度时,其读数为21.92615(乘以Mathf.Rad2Deg之后。)当跳板旋转20度时,其读数为9.949307。

起初,我认为出于某种原因,它被乘以一个未知常数,但是在通过Calculator应用检查后,我发现情况并非完全如此。经过更多的实验,我发现可能的“未知常数”虽然足够接近,但似乎在2到2.1的范围内。而且尽管我没有最清楚的线索是怎么回事,但这似乎确实是一致的。

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

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

1 个答案:

答案 0 :(得分:2)

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