范围检测
范围检测(Overlap)
一、范围检测是什么?
用于 瞬时伤害 / 范围判定 / 技能检测 的方法。
不会产生真实碰撞,仅在调用 API 的那一刻进行一次判断。
常见用途:
- 技能命中(地刺、AOE)
- 近战攻击范围
- 检查某区域是否有敌人
二、范围检测的前提
- 被检测对象必须带 Collider
三、三种主要检测形状
| 形状 | API |
|---|---|
| 盒状 Box | Physics.OverlapBox / OverlapBoxNonAlloc |
| 球形 Sphere | Physics.OverlapSphere / OverlapSphereNonAlloc |
| 胶囊 Capsule | Physics.OverlapCapsule / OverlapCapsuleNonAlloc |
四、layerMask(层)过滤
一个 int 表示 32 个层(0~31)。
通过左移使某一层对应为二进制位:
1 << LayerMask.NameToLayer("Enemy")
多个层可通过 | 组合:
1 << LayerMask.NameToLayer("Enemy") | 1 << LayerMask.NameToLayer("Default")
范围检测会检测范围内是否存在该Layer层的GameObject
五、QueryTriggerInteraction
是否检测 触发器(isTrigger):
- UseGlobal:使用 Physics 设置
- Collide:检测触发器
- Ignore:忽略触发器
六、Overlap API 参数完整拆解(精简版)
1. OverlapBox(盒状检测)
Physics.OverlapBox(center, halfExtents, rotation, layerMask, queryTriggerInteraction);
| 参数 | 含义 |
|---|---|
| center | 盒中心点 |
| halfExtents | 边长 |
| rotation | 旋转(Quaternion) |
| layerMask | 要检测的层 |
| queryTriggerInteraction | 是否检测触发器 |
1.1 OverlapBoxNonAlloc
Physics.OverlapBoxNonAlloc(center, halfExtents, results, rotation, layerMask);
results[]由你提供,无 GC- 返回命中数量
2. OverlapSphere(球形检测)
Physics.OverlapSphere(center, radius, layerMask, queryTriggerInteraction);
| 参数 | 含义 |
|---|---|
| center | 球心 |
| radius | 半径 |
2.1 OverlapSphereNonAlloc
同上,只是你提供数组。
3. OverlapCapsule(胶囊检测)
Physics.OverlapCapsule(point0, point1, radius, layerMask, queryTriggerInteraction);
| 参数 | 含义 |
|---|---|
| point0 | 顶部球体中心 |
| point1 | 底部球体中心 |
| radius | 半径 |
| 胶囊 = 两球体 + 中间圆柱。 |
3.1 OverlapCapsuleNonAlloc
同上,无 GC。

浙公网安备 33010602011771号