Version: 2021.3
Layer-based collision detection
Set a layerMask

Layers and layerMasks

Every GameObjectThe fundamental object in Unity scenes, which can represent characters, props, scenery, cameras, waypoints, and more. A GameObject’s functionality is defined by the Components attached to it. More info
See in Glossary
exists on a single layer, but Unity APIs that let you set which layers the API affect don’t directly use layers. Instead, they use layerMasks.

A layerLayers in Unity can be used to selectively opt groups of GameObjects in or out of certain processes or calculations. This includes camera rendering, lighting, physics collisions, or custom calculations in your own code. More info
See in Glossary
is a standard integer, but a layerMask is an integer formatted as a bitmask where every 1 represents a layer to include and every 0 represents a layer to exclude. This means that you can pass a layer to an API that expects a layerMasks and the script will still compile because layers and layerMasks use the same underlying type. However, the API call won’t produce the behavior you expect.

For example, if you want to perform a RayCast against GameObjects on layer 9, if you pass 9 into the Physics.Raycast call as the layerMask, Unity actually performs the ray cast against GameObjects on layers 3 and 0. This is because the binary representation of 9 is 00001001 and if you interpret this as a mask, the 1s are in the place of layers 3 and 0.

For information on how to set up a layermask to use in an API call, see Set a layermask.

Additional resources

Layer-based collision detection
Set a layerMask
Copyright © 2020 Unity Technologies
优美缔软件(上海)有限公司 版权所有
"Unity"、Unity 徽标及其他 Unity 商标是 Unity Technologies 或其附属机构在美国及其他地区的商标或注册商标。其他名称或品牌是其各自所有者的商标。
公安部备案号:
31010902002961