范围检测

  1. 在指定位置进行 瞬时 范围判断,获取范围内的角色
  2. 被检测的对象有碰撞器
  3. 执行该ApI 进行一次范围检测 不产生碰撞器
  4. 盒状检测
    Physics.OverlapBox()
    参数一:立方体的中心点
    参数二:长宽高
    参数三:立方体角度
    参数四:检测的层级 默认检测所有层 1<<LayerMask.NameToLayer(层的名称)
    参数五: 使用全局设置UseGlobal 检测触发器Collide 忽略触发器Ignore 默认全局设置
    全局设置位置:Project Settings->Physics->Queries Hit Triggers
    返回值:数组 该范围内所有对象的触发器
    Physics.OverlapBoxNonAlloc 参数类似
    返回检测到的碰撞器数量 需要传入一个数组
  5. 球形
    Physics.OverlapSphereNonAlloc
    参数2:半径
    其他参数类似
  6. 胶囊
    Physics.OverlapCapsule
    参数1:半圆一 中心点位置
    参数2:半圆二 中心点位置
    参数三:半圆半径
    Physics.OverlapCapsuleNonAlloc
  7. 层级LayerMask
    LayerMask.NameToLayer(层的名称);// 1 通过层的名字获取层的编号
    例如:LayerMask.NameToLayer(“UI”);//返回5
    通过左移符号构建二进制数 1<<LayerMask.NameToLayer(“UI”);//1<<5 二进制 0010 0000 32
    通过位运算 与和或运算 选择想要检测的层级信息
    共有32层 0-31
    Layer 0 1<<0 二进制 0000 0000 0000 0000 0000 0000 0000 0001 1
    Layer 1 1<<1 二进制 0000 0000 0000 0000 0000 0000 0000 0010 2
    Layer 2 1<<2 二进制 0000 0000 0000 0000 0000 0000 0000 0100 4
    Layer 5 1<<5 二进制 0000 0000 0000 0000 0000 0000 0010 0000 32
    1<<LayerMask.NameToLayer(“UI”) | 1<<LayerMask.NameToLayer(“Default”)//或运算 (有1则1)
    0000 0000 0000 0000 0000 0000 0000 0001 = 1
    0000 0000 0000 0000 0000 0000 0010 0000 = 32
    =
    0000 0000 0000 0000 0000 0000 0010 0001 = 33
    检测的时候使用33的二进制 与其他层的二进制进行 与运算(同1为1) 结果不为零进行检测
    例子1
    0000 0000 0000 0000 0000 0000 0010 0001=33
    0000 0000 0000 0000 0000 0000 0000 0001=1
    =
    0000 0000 0000 0000 0000 0000 0000 0001=1
    例子2
    0000 0000 0000 0000 0000 0000 0010 0001=33
    0000 0000 0000 0000 0000 0000 0000 0010=2
    =
    0000 0000 0000 0000 0000 0000 0000 0000=0
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值