c# - 在 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 轴旋转的某个点时,对象似乎进行了额外的完整旋转。
解决方案
推荐阅读
- python - 如何从类中返回方法?
- javascript - 导出仅在第一次引用时唯一的变量
- c++ - 如何在 Mac 上运行 windows C++ 项目
- kotlin - 如何制作通用扩展数据类
- python - 如何在 clang Python 绑定中公开 ImplicitCastExpr 节点?
- algorithm - 查找从当前索引到所有其他索引的距离总和
- swift - UIImagePickerController 功能无法正常用于相机,适用于相册
- c# - 如何在 Npgsql.EntityFrameworkCore 中查询具有 JSON 数组的列
- python-3.x - Variable declaration as a member of a function?
- r - 如何在 R 数据框中返回连续行