unity3d - 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);
}
解决方案
好的。在查找了脚本 APItransform.rotation
并弄乱了一些之后,我发现它正在返回四元数的 z 值,并使用.ToEulerAngles()
调用修复了它。
推荐阅读
- flutter - Flutter Crashlytics 移除 CustomKey
- swift - 我如何将 TableView 放在 CollectionViewCell 中?
- java - 从 PDFbox 中提取文本
- python - read_pickle 随机失败
- android-notifications - Android 11 NotificationChannel 的自定义声音不起作用
- qt - 从套接字接收图像并在 Qml 中显示
- php - php会话数总是增加
- authorize.net - Authorize.Net 查询定期计费
- postgresql - 将 postgresql 扩展与 Spring Boot 多租户应用程序一起使用
- android - 如何创建动态 setImageResource