【问题标题】:Unity : can I change the shape of a mesh collider at runtime?Unity:我可以在运行时更改网格对撞机的形状吗?
【发布时间】:2020-08-10 16:08:48
【问题描述】:

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

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

我找到了以下视频here,但是通过执行meshCollider.sharedMesh = null 然后meshCollider.sharedMesh = updatedMesh,对每一帧的碰撞器被简单地擦除和重新计算。

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

【问题讨论】:

    标签: unity3d mesh mesh-collider


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 2017-09-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-05-18
      • 2012-12-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多