防止对撞机在地形中发生故障
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
,但先使用SphereCast
或CapsuleCast
检查是否有足够的空间移动。
我正在使用 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
,但先使用SphereCast
或CapsuleCast
检查是否有足够的空间移动。