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,再引擎内操作时会忽略掉其他层。