在我正在创造的无尽奔跑游戏中,有一个机制叫做跳板。它基本上吸收了自上一帧以来玩家位置的变化,并将其转换为角度。然后,它与跳板的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);
}
答案 0 :(得分:2)
好。在查找了transform.rotation
的脚本API并弄乱了一点之后,我发现它正在返回四元数的z值,并使用.ToEulerAngles()
调用对其进行了修复。