编辑:这是一个相当简单的问题。我有一个真正需要多边形碰撞框精度的 2D 精灵。出于效率原因,其周围基于瓦片的 2D 世界使用瓦片 Mesh,因此具有 Mesh Collider。
以前,世界上的瓷砖都是带有 Box Colliders 和 Rigidbody 2D 的 GameObjects,船和瓷砖碰撞得很好。但是,现在我使用的是 Mesh Collider,它们不能发生碰撞。(我已经读过这是因为一个是 2D,一个是 3D。)那么我应该怎么做才能让多边形船和 2D 瓦片网格之间发生碰撞(最好是刚体物理)?[结束编辑]
在一个 2D、基于图块、程序生成、基于块的探索游戏中(在 Unity 4.5 中),我有一艘玩家飞船,它使用 2D 刚体和 2D 多边形对撞机进行碰撞检测。
当我将 Rigidbody 2D / Box Collider 2D 用于世界图块时,这效果很好。但是,这非常慢,所以我使用 Mesh Collider 和其他相关用具将离散块替换为 tile 网格。
问题是:我根本无法让碰撞检测工作。我在 xy 平面上有瓷砖,碰撞网格(我可以在场景视图中看到它,所以我知道它有效)由四个垂直于瓷砖的矩形组成。(如果你无法想象这一点,我不怪你。看这里。)
到目前为止我看到了什么?好吧,我验证了(2D)船实际上通过了场景视图中的碰撞框。此外,这两个对撞机都不是“触发”。
由于似乎没有关于如何实际使用网格的官方文档(有吗?在哪里?),我无法确定 Mesh Colliders 和 Polygon Colliders 是否真的可以交互。因为一个是 2D,一个是 3D,这不起作用吗?如果是这样,那我应该怎么做呢?我尝试为船使用 Box Collider [3D],但这也不起作用。不过,我可能在这里犯了一个错误。
我是否应该手动处理碰撞(使用 OnCollisionEntered [或其他] 方法)?以前,rigidbody2D 对象会自动处理所有内容。否则,是否还有其他可能的原因碰撞可能不起作用?