【Unity連載】レイヤー機能を利用した衝突判定のON/OFF


レイヤー機能を利用した衝突判定のON/OFF


前回はレイヤーの設定方法を紹介しました。→ 【Unity連載】レイヤーの設定方法

今回はレイヤー機能を使用した衝突判定の回避方法について紹介していきます。

当たり判定をもったゲームオブジェクトが重なると予期せぬ動きをする


マルチプレイヤーゲームにおいてプレイヤー同士は重なってすれ違えるけど、床や壁とはちゃんと当たり判定を持つケースがあります。
このような実装は衝突する対象をレイヤーレベルで選択することで解決していきます。

仮に物理演算(Rigidbody)と当たり判定(Collider)を有効にしたゲームオブジェクト同士が重なり合った状態になると、下図のように反発してしまいます。unity_skill_2

このような現象を回避するため、レイヤーごとに衝突判定の有無を設定します。

Physics Manager で レイヤー ごとに衝突判定のON・OFFを設定する


レイヤー間でのコリジョン(衝突)有無の設定は、Physics Managerから行います。
メニューバーから、Edit → Project Settings → Physics と選択し、インスペクターにPhysics Managerを開きます。
一番下にある項目、Layer Collision Matrix を使用してレイヤーごとの衝突定の有無を設定します。
WS000363

Layer Collision Matrix

レイヤー同士の衝突判定の組み合わせ表(マトリクス)が表示されています。
デフォルトではすべてのチェックがONになっていますが、各レイヤー名が交差する位置のチェックマークをOFFにすると、そのレイヤー間で衝突判定が行われなくなります。
WS000364

例えば前回作成した「My Layer 1」レイヤー同士の衝突を回避させたければ、「My Layer 1」が交差する箇所のチェックを外します。
WS000368

これで「My Layer 1」のレイヤーが設定されたオブジェクト同士は衝突判定が行われなくなります。
以上がレイヤーを活用した衝突判定の回避方法です。

次回はレイヤーマスクについて詳しく紹介していきます。

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

PAGE TOP