Unity以后的MeshCollider(网格碰撞体) 上篇

时间:2024-04-08 15:33:16

Unity2018以后的MeshCollider(网格碰撞体)

上篇

今天在用Unity2018.4.0f1做项目时发现自己的工程报错,打开控制台一看发现了这个:
Unity2018以后的MeshCollider(网格碰撞体) 上篇大意就是说在unity5以后的游戏对象不再支持同时捆绑有非凸面体(non-Convex)的MeshCollider和Rigidbody的情况。
要么MeshCollider勾选Convex,要么刚体勾选Is Kinematic(是否为运动学)属性。

官方文档(版本2019.2)中也写到:
Mesh Colliders that do not have Convex enabled are only supported on GameObjects without a Rigidbody component. To apply a Mesh Collider to a Rigidbody component, tick the Convex checkbox.
好吧,只能二者选其一了。如果你的模型是为了精确碰撞必须非凸面体,那就去掉Rigidbody组件或勾选Is Kinematic属性。
但如果你想要让两个MeshCollider发生碰撞,那就必须勾选Convex属性(但只有MeshCollider的三角形数量小于255时,Convex参数才会生效! Convex Mesh Colliders are limited to 255 triangles.)
顺便一说,MeshCollider是按照所附加对象的Transform组件属性来设置碰撞体的位置和大小比例。而且碰撞网格使用了背面消隐模式(也就是说,一个GameObject与另一个采用背面消隐网格(Mesh)的GameObject即使在视觉上发生了碰撞,他们也并不会在物理上发生碰撞)

另外查阅官方文档的时候发现unity5以后的MeshCollider好像多了个新的参数“Cooking Options”。不过关于这个参数的作用和信息我还一点也不清楚。。。就打算把这篇博文分成上下两篇来写,下期再来解析一下关于这个新加入的Cooking Options参数究竟是个啥。