Unity:我可以在运行时更改网格碰撞器的形状吗



我有一个网格,可以根据用户的输入更新它的形状,我如何让碰撞器匹配网格的新形状?

需要注意的是:网格总是凸的(没有例外(。我看到为了使对撞机正常工作,这很重要。

我在这里找到了下面的视频,但对撞机只是被擦除,并通过执行meshCollider.sharedMesh = nullmeshCollider.sharedMesh = updatedMesh为每一帧重新计算。

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

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

"您不应该修改用于碰撞器的网格几何体,因为每次更改网格时,物理引擎都必须重建内部网格碰撞加速结构。这会导致大量的性能开销。对于需要在运行时碰撞和更改的网格,通常最好使用胶囊、球体和长方体等基本碰撞器来近似网格形状。">

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

相关内容

  • 没有找到相关文章

最新更新