防止物体侧着着地;确保它总是面朝上或面朝下

Preventing an object from landing on its side; ensuring it always lands face-up or face-down

目前正在Unity中做一个shell折腾的项目。 shell 在 Blender 中制作并在 Unity 中导入。我在 shell.

上附加了一个盒子对撞机

现在,当我对 shell 施加随机力来翻转它时,它有时会停留在垂直向上的位置,而结果是正面(正面朝上)或反面(正面朝下)应该已经发生了。

我试过改变轴,增加重力。但是 none 这些解决方案有效。

我现在所做的是当 shell 着陆后处于静止位置时,我将 shell 旋转 90 度 - 但这不是一个很好的解决方案,因为它是慢并且需要时间来检查 shell 是否已经停止。

我正在寻找更好的主意,这样 shell 应该只停留在正面或反面状态。

如果你为你的 shell 使用盒子碰撞器,你最终会遇到这种有问题的情况,翻转的 shell 有时会侧身坐着,而不是 face-up 或 face-down.

在这种情况下,我建议使用 Capsule Colliders,它们是具有圆形顶部和底部的圆柱形碰撞体。如果胶囊对撞机落在任何一端,它就会侧翻:

但是,一个胶囊对撞机是不够的 - 否则,shell 会在它翻倒后开始滚动。我建议 2 或 3,以十字形排列,使它们的尖端对应于 shell:

的两侧

现在,如果 shell 落在它的任何一边,它就会翻倒在十字架的一个面上 - face-up 或 face-down。要将胶囊碰撞器添加到您的游戏对象,只需单击添加组件,然后单击 select Physics > Capsule Collider。然后修改属性,让它们进入想要的位置:

您选择的方向应该是X-Axis和Z-Axis。方向正确后,更改“中心”值以将碰撞器移动到正确的位置以穿过 shell。然后,改变碰撞器的半径以影响十字的厚度,并改变高度使它们的尖端与 shell.

的边缘对齐

希望对您有所帮助!如果您有任何问题,请告诉我。