Tips

Unityのレイヤー機能を使用した衝突判定の回避

Unityのレイヤー機能を使用した衝突判定の回避

Unityのレイヤー機能を使用した衝突判定の回避


UnityのエディターやC#のちょいワザを紹介していきます。
今回は、Layer機能を使用した衝突判定の回避方法についてです。
[Unity_317×90]

コライダーがめり込むと予期せぬ動きをする


マルチ対戦ゲームなどにおいて、当たり判定を持ったプレイヤー同士はマップ上ですれ違えません。
また、基本的にオブジェクト同士は重なり合わないように配置することが一般的ですが、デフォルトの3Dオブジェクトではうまく接合できない角度がどうしても出てきてしまいます。このようなケースで、オブジェクトがRigidBodyをもっており、コライダーが有効になっていると、下図のように反発してしまいます。

unity_skill_2

Physics Manager で Layer ごとに衝突判定の有無を設定する


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

Layer Collision Matrix

Layer同士の衝突判定の組み合わせ表です。
Layer名が交差する位置のチェックマークをOFFにすると、衝突が判定が行われなくなります。
WS000364

レイヤーの変更および作成方法

Layerの変更は、ゲームオブジェクトのインスペクターから、Layerのプルダウンにて行います。
新規Layerを作成する場合は、Add Layerを選択します。
WS000365

名前を自分でつけます。
WS000366

作成するだけでは切り替わらないので、変更を忘れないようにしましょう。
WS000367

Layer Collision Matrix

最後にLayer Collision Matrix にて作成したLayerが交差する箇所のチェックを外しておきます。
WS000368

以上の設定で、作成したLayerのオブジェクト同士は衝突判定が行われなくなりました。

ゲーム制作関連のオススメ連載リンク

とっても手軽なゲーム制作体験!
Unityゲーム開発基礎

実際のリリースゲームを題材にしたハンズオンゲーム制作連載
実践unityゲーム開発

Recent News

Recent Tips

Tag Search