我有一个网格,可以根据用户的输入更新它的形状,我如何让碰撞器匹配网格的新形状?
需要注意的是:网格总是凸的(没有例外(。我看到为了使对撞机正常工作,这很重要。
我在这里找到了下面的视频,但对撞机只是被擦除,并通过执行meshCollider.sharedMesh = null
和meshCollider.sharedMesh = updatedMesh
为每一帧重新计算。
由于我已经在计算网格的每个顶点、边和三角形的位置,我是否可以将这些值用于网格碰撞器?
没有办法做到这一点,因为对撞机没有构造函数。你正在做的事情在统一文档中是明确不受欢迎的
"您不应该修改用于碰撞器的网格几何体,因为每次更改网格时,物理引擎都必须重建内部网格碰撞加速结构。这会导致大量的性能开销。对于需要在运行时碰撞和更改的网格,通常最好使用胶囊、球体和长方体等基本碰撞器来近似网格形状。">
一个解决方案是在方法上使用InvokeRepeating,并每隔一秒而不是每一帧创建一个新的网格碰撞器(您可以测试并使其达到0.1秒、2秒,任何可以在不掉帧的情况下运行的时间(。当对象完成移动时,可以调用CancelInvoke。