Unity3d使用MeshCollider检测区域

本文探讨在Unity3d中如何利用MeshCollider进行地图区域检测,遇到的问题及其解决方法。当MeshCollider的Convex属性引发精度问题时,作者选择使用射线检测来实时判断角色在哪个地图区域,实现更准确的区域交互。
摘要由CSDN通过智能技术生成

如果想将地图分为几个不同区域,并实时检测人物在哪个小区域,而且区域是不规则形状的类似这种地图。
这里写图片描述

很自然的想到使用模型添加meshcollider来通过碰撞检测。做几个小地图形状的meshbox,拼在一块,使用OnTriggerEnter/Stay/Exit来检测。但是首先让我们来看看meshCollider介绍。

Unity3d圣典 网格碰撞器 Mesh Collider

以下为摘选的mesh collider介绍:

网格碰撞器利用一个网格资源并在其上构建碰撞器。对于复杂网状模型上的碰撞检测,它要比应用原型碰撞器精确的多。标记为凸起的(Convex )的网格碰撞器才能够和其他网格碰撞器发生碰撞。
class-MeshCollider-0
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
    一个可供选择的碰撞器使用方法是标记他们为触发
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值