Version: 2020.3
レイヤーベースの衝突検出
レイヤーマスクの設定

レイヤーとレイヤーマスク

ゲームオブジェクトは全て 1 つのレイヤー上に存在しますが、どのレイヤーに影響を与えるかの設定が可能な Unity API は、レイヤーを直接使用するのではなく、レイヤーマスクを使用します。

layer は標準の整数ですが、layerMask はビットマスクとしてフォーマットされた整数で、全ての 1 は含むレイヤーを表し、全ての 0 は除外するレイヤーを表します。つまり、layer と layerMask は同じ基本の型を使用しているので、layerMask を想定する API に layer を渡した場合にも、スクリプトがコンパイルされます。ただし、API 呼び出しは想定通りの動作を生成しません。

例えば、レイヤー 9 のゲームオブジェクトに対して RayCast (レイキャスト) を実行したい場合、Physics.Raycast の呼び出し内に 9 をレイヤーマスクとして渡すと、Unity は実際にはレイヤー 30 のゲームオブジェクトに対してレイキャストを実行します。これは、9 のバイナリ表現が 00001001 であり、これをマスクとして解釈すると 1 がレイヤー 30 にあるからです。

API 呼び出しで使用するためにレイヤーマスクを設定する方法については、レイヤーマスクの設定 を参照してください。

その他の参考資料

レイヤーベースの衝突検出
レイヤーマスクの設定
Copyright © 2023 Unity Technologies
优美缔软件(上海)有限公司 版权所有
"Unity"、Unity 徽标及其他 Unity 商标是 Unity Technologies 或其附属机构在美国及其他地区的商标或注册商标。其他名称或品牌是其各自所有者的商标。
公安部备案号:
31010902002961