Unity LayerMask
Posted Litmin
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Unity LayerMask相关的知识,希望对你有一定的参考价值。
Unity用int32的每一位表示32个层,int32用二进制有32位,Layers通常被摄像机用来渲染部分场景,和灯光照射部分场景使用。但是它们也可以用来做射线检测时忽略一些collder或Collision使用。
LayerMask mask = 1 << 你需要开启的Layers层。
LayerMask mask = 0 << 你需要关闭的Layers层。
例如:
开启layer0和layer2:LayerMask mask = 1 << 0 | 1 << 2;
开启layer0关闭layer2:LayerMask mask = 1 << 0 | 0 << 2;
开启Default:LaserMask mask=1 << LayserMask.NameToLayer(“Default”);
实际应用
RaycastHit2D raycastHit = Physics2D.CircleCast(transform.position, bounds, Vector2.right, 1 << LayserMask.NameToLayer(“Default”));
原理:开启:NameToLayer返回该layer的int值,然后将1左移这么多位,当做mask,这样其他层都为0,再引擎内操作时会忽略掉其他层。
以上是关于Unity LayerMask的主要内容,如果未能解决你的问题,请参考以下文章
[Unity]Ray射线物理检测碰撞和LayerMask的使用
[Unity]Ray射线物理检测碰撞和LayerMask的使用
带有 LayerMask 的 Unity Physics.Raycast 不会检测图层上的对象。使用了位移,尝试了反相层,仍然没有任何效果