首页 > 解决方案 > 在 Unity 中应用多个旋转

问题描述

我在旋转游戏对象时遇到问题。游戏是第一人称的,玩家可以从地上捡起物理物体。对象应保持其相对于相机的旋转。游戏世界是球形的,因此当玩家对象携带对象在世界各地移动时,还必须应用旋转以匹配玩家对象的旋转。还可以使用键盘围绕 Y 轴旋转对象。

Quaternion playerDeltaRotation = Quaternion.FromToRotation(originalPlayerForward, transform.forward);
closest.transform.rotation = Quaternion.Euler(0, offsetRotation, 0) * originalItemRotation;
closest.transform.rotation = playerDeltaRotation * closest.transform.rotation;

该脚本位于玩家 GameObject 上。最接近的是已拾取的对象。playerDeltaRotation 是球形世界应用到玩家对象的旋转,因为玩家在拾取对象后已经移动。originalItemRotation 是物体被拾取时的旋转。offsetRotation 是可以使用键盘操作的 Y 轴旋转。

这个想法是首先应用 offsetRotation,然后是 playerDeltaRotation。这是一个合理的方法吗?

该视频显示了这种行为

我得到奇怪的旋转,有时围绕错误的轴。此外,当通过相机绕 Y 轴旋转的某个点时,对象似乎进行了额外的完整旋转。

标签: c#unity3dquaternions

解决方案


推荐阅读