知识点一 什么是范围检测
知识点二 如何进行范围检测
如果只填这两个参数,那么相当于在世界坐标(0,0,0)处添加了一个长宽高为1的BoxCollider的功能。但是只是一瞬间的碰撞。
引入新知识;LayerMask
每一个物体都有一个层级:
扫描二维码关注公众号,回复:
15061425 查看本文章
在Unity中最多有32个层级:
我们的UI层级在第五个,于是我们打印(LayerMask.NameToLayer("UI");
于是我们可以通过LayerMask.NameToLayer来获得对应层级的排序。
那么我们可以直接在第四个参数这样填写吗?
答案是不行的。
一个潜在的知识点:在Unity中涉及到层级检测的,特别是物理这边。一定不是直接填某一层对应的int值。如下:
正确的写法:
层级知识:
如果想要检测多层:
或运算,内部的参数会与传入的二进制进行与操作来判断是否检测。
那么问题:如果想要检测32层中的31曾怎么办?
用32位1与要排除的那一层进行异或运算,再传入。
第五个参数:不填默认全局检测
默认勾选
注意:它不会创建一个碰撞器,它们在内部计算。
另一个API与上面区别就是需要自己传入一个碰撞器的数组。返回的是数组数量。