[已解决 - 使用网格碰撞器在 X 和 Y 上进行 3D 运动
[Solved - 3D movement on X and Y with mesh colliders
我正在使用自上而下的相机制作 3D 小行星克隆。此设置是静态的,不会更改(所以不,我不想将项目转换为 2D 游戏)。
这意味着我需要将所有移动限制在 X 轴和 Y 轴上。我为小行星和玩家创建了运动,一切正常。所有移动均使用 AddForce
在各自的 RigidBody
组件上完成。
问题是我开始处理碰撞。我使用 Mesh Collider
个组件来获得漂亮而精确的 "touch reaction"。问题是当发生这样的碰撞时,新的移动矢量的 Z 值不同于 0。这是一个问题,因为对象将开始在 Z 轴上移动。
我尝试了什么:
- RigidBody 的冻结约束
- 在
Update
函数中手动重置Z
第一个解决方案(冻结约束)不起作用,第二个也没有(而且,第二个看起来很乱)
所以问题是
在使用与 Mesh Colliders
的精确碰撞时,将基于物理的运动仅强制到 X 和 Y 轴的最佳方法是什么?
您确定您正确使用了位置限制吗?您可以检查以使用矢量设置限制,如文档中所述。 https://docs.unity3d.com/ScriptReference/RigidbodyConstraints.FreezePosition.html
看看它是怎么做到的。如果没有,请分享您在编辑器中尝试的刚体限制的代码或屏幕截图
我正在使用自上而下的相机制作 3D 小行星克隆。此设置是静态的,不会更改(所以不,我不想将项目转换为 2D 游戏)。
这意味着我需要将所有移动限制在 X 轴和 Y 轴上。我为小行星和玩家创建了运动,一切正常。所有移动均使用 AddForce
在各自的 RigidBody
组件上完成。
问题是我开始处理碰撞。我使用 Mesh Collider
个组件来获得漂亮而精确的 "touch reaction"。问题是当发生这样的碰撞时,新的移动矢量的 Z 值不同于 0。这是一个问题,因为对象将开始在 Z 轴上移动。
我尝试了什么:
- RigidBody 的冻结约束
- 在
Update
函数中手动重置Z
第一个解决方案(冻结约束)不起作用,第二个也没有(而且,第二个看起来很乱)
所以问题是
在使用与 Mesh Colliders
的精确碰撞时,将基于物理的运动仅强制到 X 和 Y 轴的最佳方法是什么?
您确定您正确使用了位置限制吗?您可以检查以使用矢量设置限制,如文档中所述。 https://docs.unity3d.com/ScriptReference/RigidbodyConstraints.FreezePosition.html 看看它是怎么做到的。如果没有,请分享您在编辑器中尝试的刚体限制的代码或屏幕截图