Mecanim 发表于 2022-3-6 13:54

【唐老狮】Unity——物理系统(范围检测)

【学习目标】

能够使用范围检测函数在游戏中进行范围检测
<hr/>【范围检测】


[*]作用
在3D世界中检测在某一个范围内存在的物体


在游戏中,经常会存在这样的技能,比如陨石术,定点爆破等等,他们都是释放的一瞬间,判断某一个范围内是否有怪物或者玩家,然后让其受到伤害,检测一次后就结束。
如果我们用之前的碰撞检测,和射线检测都不太适合做这样的功能。因为碰撞检测主要是用来长时间存在的物体间进行判断的,比如检测子弹和其它物体是否有碰撞;而射线检测是线性的检测,并不是范围的。
所以这种瞬间的,范围的判断就必须要学习我们今天的范围检测了。


[*]必要条件
碰撞体
<hr/>【关键函数】


盒状范围检测


球形范围检测


胶囊范围检测


<hr/>【关键参数】

返回值
Collider[]
如果范围内存在带有碰撞盒的对象,会将所有带碰撞体对象以数组形式返回,可以通过它得到物体的所有信息

盒状范围检测




center——立方体中心点(世界坐标系)
halfExtents——立方体三边大小
orientation——立方体角度(世界坐标系)
layerMask——层遮罩(同射线检测中)

球形范围参数




center——球中心点(世界坐标系)
radius——球半径
layerMask——层遮罩(同射线检测中)

胶囊范围参数




point0——点一
point1——点二
radius——半径
layerMask——层遮罩(同射线检测中)

注意
当使用范围检测函数时,不会在场景中真实出现一个碰撞体
<hr/>【实例】

以盒装范围检测为例,球形和胶囊同理,只是使用的函数不同





cube1和cube2在范围内,cube3在范围外



点击鼠标后,在范围内的立方体名字被打印出来了

注意
如果没有一个碰撞体在范围内,返回的数组是长度为0的空数组
<hr/>【总结】

范围检测有三种

[*]盒装
[*]球形
[*]胶囊
↓↓↓
↓↓↓
你要问我怎么用
直接Physics点函数

使用范围检测相对碰撞检测和射线检测要简单许多,我们只需要记下几个函数,以及参数的含义即可!要记住的是,他在实践中的运用主要是用来处理一些瞬间触发的范围碰撞检测的,所以它更多的被应用在技能系统中!
<hr/>关注唐老狮获取更多干货内容
页: [1]
查看完整版本: 【唐老狮】Unity——物理系统(范围检测)