(:3[kanのメモ帳]

個人ゲーム開発者kan.kikuchiのメモ的技術ブログ。月木更新でUnity関連がメイン。

(:3[kanのメモ帳]


本ブログの運営者kan.kikuchiが個人で開発したゲームです!


オブジェクトごとに特定のレイヤーと衝突するかの設定が出来る機能 Collision Layer Override【Unity】


このエントリーをはてなブックマークに追加


この記事でのバージョン
Unity 2022.2.8f1


はじめに

Unityではレイヤー(Layer)ごとに衝突するかどうかを設定出来ますが、


「同じ敵だけど例外的にこのオブジェクトだけ衝突させたくない」

「このオブジェクトとの衝突を一瞬だけなくしたい」

みたいに細かい仕様が多い場合にはレイヤーが増えて使い勝手がよくないです。


しかし、Unity2022.2からCollision Layer Overrideという

オブジェクトごとに特定のレイヤーと衝突するかの設定が出来る機能が追加されたので、

今回はその紹介記事です!


Collision Layer Override

設定は各ColliderのInspectorで行います。

includeLayersが衝突するレイヤーで、excludeLayersが衝突しないレイヤーです。


なお、レイヤーを変える時と同じ感じでプログラムから変更する事も可能です。

collider.includeLayers = LayerMask.GetMask("Default");
collider.excludeLayers = LayerMask.GetMask("UI");


ちなみに、2Dでも同様の機能がありますが、設定出来る要素が3Dよりも多い感じで、


Force Send Layersで力を与えるレイヤー、Force Receive Layersで力を受けるレイヤーが設定でき、




Contract Capture LayersやCallback Layersでフラグやコールバックが影響するレイヤーを設定出来ます。

なお、対応するフラグやコールバックは以下のページから確認出来ます。






参考