今天项目中用到胶囊体投射,在设置LayerMask参数的时候直接使用LyaerMask.NameToLayer("SomeLayer")是行不通的,不会找到这个层级的,后来发现是在Unity的Layer层中一共有32个层级,相当于一个32位的二进制数,每个层级对应的位为1,其他为0,而得到的LyaerMask.NameToLayer("SomeLayer")是将1左移多少位,因此我们需要使用1<<LyaerMask.NameToLayer("SomeLayer") 替换就可以了,这个在官方的LayerMask中有讲到,还是对API不太了解导致,因此多看看API还是有好处的。这个LayerMask参数也是可以直接设置为1左移之后的得到的结果,比如你想要检测第4层,那么你可以直接输入2^4,16就可以了。同理,如果你想要同时检测第1层和第2层两层,那么可以把LayerMask参数设置为6,因为2^1+2^2 = 6,这样你就可以同时检测多个层级了。
Unity中关于胶囊体投射中遇到的一个坑
最新推荐文章于 2022-11-07 16:53:37 发布