如何在Unity3d中检测网格碰撞?

时间:2019-02-16 12:30:30

标签: c# unity3d collision-detection mesh mesh-collider

我们可以在unity3d中检测到网格碰撞吗?我想在碰撞时显示一些纹理,目前我正在使用盒碰撞器,这就是为什么其表面/边缘与对象体网格不匹配的原因,即使我在网格表面上获得了碰撞点,我也不知道如何在网格上方的特定位置上在网格上放置纹理,在unity3d中是否存在特定于同类需求的内置组件或解决方法?

enter image description here

正如我们在图片中看到的那样,因为盒对撞机位于目标对象网格内,所以已在游戏对象内部检测到碰撞 注意:这是我已用虚拟立方体网格替换的实际网格

但是有什么方法可以检测何时子弹对撞机/网格实际上正在穿过目标对象的网格,如下图所示,我已经显示了我到底要检测目标物体网格与子弹网/对撞器之间的碰撞点的位置还有如何在此处绘制纹理(网格上的击中点)。

enter image description here

1 个答案:

答案 0 :(得分:1)

简短回答:否

因为那不是它的工作原理。

长答案:

如果希望将网格用作碰撞体,则应将网格设置为MeshCollider component的目标。但是,网格碰撞器非常昂贵:每次移动,缩放,旋转或以其他方式更改边界时,Unity都需要重新计算它们。

但是,有this asset可以在 renderer 网格上进行光线投射,而无需使用对撞机,但是我不知道会带来什么样的性能冲击。 / p>