2

我有一个根据用户输入更新其形状的网格,我怎样才能让对撞机匹配网格的新形状?

作为重要说明:网格始终是凸的(没有例外)。我看到为了让对撞机正常工作很重要。

我在这里找到了以下视频,但对撞机只是通过执行meshCollider.sharedMesh = null然后为每一帧擦除和重新计算meshCollider.sharedMesh = updatedMesh

由于我已经在计算网格的每个顶点、边和三角形的位置,我是否可以将这些值用于网格对撞机?

4

1 回答 1

3

没有办法做到这一点,因为对撞机没有为此的构造函数。你正在做的事情在统一文档中被明确反对

'您不应该修改用于碰撞器的网格几何体,因为每次更改网格时物理引擎都必须重建内部网格碰撞加速结构。这会导致大量的性能开销。对于需要在运行时发生碰撞和变化的网格,通常最好使用原始碰撞器(如胶囊、球体和盒子)来近似网格形状。

一种解决方法是在您的方法上使用 InvokeRepeating 并每秒而不是每帧创建新的网格碰撞器(您可以测试并使其为 0.1 秒、2 秒,任何可以在不丢帧的情况下运行)。当对象完成移动时,您可以调用 CancelInvoke。

于 2020-08-10T16:16:27.853 回答