如果想将地图分为几个不同区域,并实时检测人物在哪个小区域,而且区域是不规则形状的类似这种地图。
很自然的想到使用模型添加meshcollider来通过碰撞检测。做几个小地图形状的meshbox,拼在一块,使用OnTriggerEnter/Stay/Exit来检测。但是首先让我们来看看meshCollider介绍。
以下为摘选的mesh collider介绍:
网格碰撞器利用一个网格资源并在其上构建碰撞器。对于复杂网状模型上的碰撞检测,它要比应用原型碰撞器精确的多。标记为凸起的(Convex )的网格碰撞器才能够和其他网格碰撞器发生碰撞。
A Mesh Collider used on level geometry 用于台阶状物体的网格碰撞器Properties 属性
- Material 材质
引用何种物理材质决定了他和其他对象如何作用。- Is Trigger 是否触发器
如激活,此碰撞器用于触发事件,并且被物理引擎忽略。- Mesh 网格
用于碰撞所引用的网格- Smooth Sphere Collisions
平滑性状碰撞
当被激活,碰撞网格法线是平滑的。用于平滑表面比如由没有棱角的平滑起伏组成的起伏地标时应该激活。- Convex 凸起的
如激活,该网格碰撞器将会和其他网格碰撞器碰撞。凸起的网格碰撞器限制在255个三角形面内。Details 细节
网格碰撞器通过附加在游戏对象上的网格构建碰撞效果,并严格按照所附加对象的Transform属性来设定其位置和大小比例。
碰撞网格使用背面剔除(或译背面拣选,指正面多边形挡住了在它后面的背面多边形,Direct3D将通过拣选(即删除多余的处理过程)背面多边形来提高效率的过程。)如果一个对象和被背面剔除的网格碰撞,那也不会在物理上碰撞。
使用网格碰撞器有一些限制条件。通常,两个网格碰撞器之间不会发生碰撞。所有的网格碰撞器可以和任何原型碰撞器碰撞。如果网格标记为凸起的(Convex),那么就可以和其他网格碰撞器碰撞。
碰撞器作用于刚体使Unity中的物理作用生效。因为刚体允许对象被物理系统控制。碰撞器使对象之间产生碰撞作用。碰撞器必须独立于刚体加在对象上。碰撞器并不一定需要附加刚体,但是要使移动物体具有碰撞效果必须附加刚体。
当两个碰撞器间产生碰撞并且其中至少一个附加了刚体时,三个碰撞信息会发送给附加他们的对象,这些事件可以被脚本处理,而且允许用户可以选择自己写脚本或使用内置的NVIDIA PhysX引擎创建唯一的行为。
- Triggers
一个可供选择的碰撞器使用方法是标记他们为触发