【100 个 Unity 踩坑小知识点】| Unity 中的 碰撞盒检测 Physics.OverlapBox、OverlapCapsule、OverlapSphere
Unity 小科普
老规矩,先介绍一下 Unity 的科普小知识:
Unity 是 实时 3D 互动内容创作和运营平台 。
包括游戏开发、美术、建筑、汽车设计、影视在内的所有创作者,借助 Unity 将创意变成现实。
Unity 平台提供一整套完善的软件解决方案,可用于创作、运营和变现任何实时互动的 2D 和 3D 内容,支持平台包括手机、平板电脑、PC、游戏主机、增强现实和虚拟现实设备。
也可以简单把 Unity 理解为一个游戏引擎,可以用来专业制作游戏!
Unity 踩坑小知识点学习
Unity 中的 碰撞盒检测 Physics.OverlapBox、OverlapCapsule、OverlapSphere
在 Unity 中常见的有两种检测方法
一种是组件的检测方法
OnTrigger、OnCollider
另一种就是
Physics.Overlap
第二种方法其实是 Physics 中的 API,官方API介绍地址。
能直接通过 Physics.到的碰撞检测方法有下面几种:
Physics.OverlapBox
Physics.OverlapCapsule
Physics.OverlapSphere
其中这三种又有多种重载函数,看自己的需求选择即可。
下面简单介绍下这三种形状的碰撞检测方法的使用。
Physics.OverlapBox
参数介绍:第一个 Vector3 是碰撞的中心,第二个为 Box 的长宽高,第三个 Quaternion 类型为 Box 的方向,第四个为碰撞检测的层级的 Layer(默认为所有的 Layer),最后的 queryTrigger 一般用不到。
返回值为与 BOX 碰撞的 Collider 数组
下面是使用实例:
一般来说没有特殊的需求,只需要设置碰撞的中心点和长宽高即可。
我们给主角的脚本中添加上一个这样的方法,就可以实现与 Collider 组件一样的效果了,拿到与主角碰撞的所有物体。
特别说明:由于使用该方法进行检测的时候,缺少一个视觉效果,我们不知道检测的范围到底有多大,所以这个时候可以使用 Gizmos 辅助线框 来完美解决这个问题
效果如下:
完整代码如下:
Physics.OverlapCapsule
参数介绍:第一个 Vector3 是 Capsule 的的底部中心,第一个 Vector3 是 Capsule 的的顶部中心,第三个是 Capsule 的半径,第四个为碰撞检测的层级的 Layer(默认为所有的 Layer),最后的 queryTrigger 一般用不到。
返回值为与 Capsule 碰撞的 Collider 数组。
使用方法与 OverlapBox 一致,只不过是参数不同。
Physics.OverlapSphere
参数介绍:第一个 Vector3 是 Sphere 的中心,第二个是 Capsule 的半径,第三个为碰撞检测的层级的 Layer(默认为所有的 Layer),最后的 queryTrigger 一般用不到。
返回值为与 Capsule 碰撞的 Collider 数组。
使用方法与 OverlapBox 一致,只不过是参数不同。
绘制可视化线框的时候使用Gizmos.DrawWireSphere
即可。
评论