防止对撞机在地形中发生故障

Preventing collider from glitching through terrain

我正在使用 Unity 2019.2.1f1 中的地形和带有网格碰撞器的自定义洞穴网格。

我这个Capsule Collider比洞口还大的角色应该是进不去的。但是由于两个collider的圆度,他可以在洞里生效,穿过地形对撞机。

我认为它的速度并不过分,我在FixedUpdate()中用rb.MovePosition()移动角色,我将它的刚体碰撞检测设置为连续推测尝试了所有 "continuous" 模式

在下面的动画中,您可以看到角色周围的洞穴网格和胶囊碰撞器。

如何防止这种情况发生?我怎样才能对 Unity 说:"I want the colliders to be rock solid and not marshmallow"?

Unity 中的碰撞体 坚如磐石。它们无法进行任何类型的软物理,它们相互扭曲的唯一时刻就是当你强迫它们时。

在这里,您将刚体位置强行设置到一个不可能的位置。尽管空间不足,但游戏会尽力适应您的刚体。

你可以

  • 只使用力和速度。你可以简单地将速度设置为你选择的方向,停止移动时将其设置为0,或者使用AddForce,这基本上是一样的。

  • 继续使用MovePosition,但先使用SphereCastCapsuleCast检查是否有足够的空间移动。