Unity-范围检测

 知识点一 什么是范围检测

 知识点二 如何进行范围检测

如果只填这两个参数,那么相当于在世界坐标(0,0,0)处添加了一个长宽高为1的BoxCollider的功能。但是只是一瞬间的碰撞。

 

 引入新知识;LayerMask

 每一个物体都有一个层级:

扫描二维码关注公众号,回复: 15061425 查看本文章

在Unity中最多有32个层级:

 

 我们的UI层级在第五个,于是我们打印(LayerMask.NameToLayer("UI");

 于是我们可以通过LayerMask.NameToLayer来获得对应层级的排序。

 那么我们可以直接在第四个参数这样填写吗?

 答案是不行的。

一个潜在的知识点:在Unity中涉及到层级检测的,特别是物理这边。一定不是直接填某一层对应的int值。如下:

 正确的写法:

 层级知识:

 如果想要检测多层:

或运算,内部的参数会与传入的二进制进行与操作来判断是否检测。

 那么问题:如果想要检测32层中的31曾怎么办?

用32位1与要排除的那一层进行异或运算,再传入。

第五个参数:不填默认全局检测

 默认勾选

 注意:它不会创建一个碰撞器,它们在内部计算。

另一个API与上面区别就是需要自己传入一个碰撞器的数组。返回的是数组数量。

 球形范围检测

 胶囊碰撞器

猜你喜欢

转载自blog.csdn.net/qq_42705793/article/details/127736762