Layerを使った衝突判定の有無 -Unity-

Layerを使った衝突判定の有無 -Unity-

こんばんは、ちきなるです。

 

地面にはぶつかって欲しいけど、建物にはぶつかって欲しくない。

みたいに、衝突の判定を分けたい時があります。

 

そんな時、Layer(レイヤー)で分けると便利です。

 


 

Layer(レイヤー)とは。

日本語で、層。

イメージとしては、透明な紙を沢山並べた感じです。

イラストを作成するソフトで、よく使われますが・・・。

例えば、背景と人物。体と服。

の様に、Layer毎に描き分けを行い、後から修正しやすくします。

 

Unityでも、同じようにLayerを分けることで、描画の選択や、ライトの当て方、物体の衝突などを分ける事が出来ます。

 


 

レイヤーの設定

Layerを設定したいオブジェクトのInspecter(インスペクター)ビューで、Layerを設定できます。

赤枠の部分がLayerです。

 

初期値は、Defaultが選択されています。

Default以外にいくつか設定されているものがあります。

詳細は、調べていないのでわかりません!!

なので、カット。

基本的には、User Layerと、書かれている8 ~ 31までのLayerに名前を付けて使用します。


Layerを設定したいオブジェクトのInspecterビューのLayer横のプルダウンメニューをクリックすると、下の画像の様になります。

赤枠の “Add Layer…”をクリックすると、Tags & Layersの画面が表示されます。(Layers表示)

追加したいLayerの名前を打ち込むと、新しいLayerが出来ます。(RedとBlueのLayerを作成しています。)

後は、作成したLayerをオブジェクトに設定すれば、Layerの設定完了です。

余談ですが、

Edit → Project Settings → Tags and LayersでもLayerを増やせます。

 

Layerの設定は出来ましたが、これだけでは、衝突判定を分ける事は出来ません。

赤色と青色で衝突判定を分けたい!!

そのためには、”Layer Collision Matrix”を設定する必要があります。

 


 

衝突の設定。

Editタブの”Project Settings”を開きます。

Project Settingsの”Physics 2D”を選択します。

Physics 2Dの”Layer Collision Matrix”を選択すると、Layer毎の衝突判定の設定が出来ます。

 

衝突させたくないLayerのチェックを外すと、衝突判定が起きなくなります。

今回は、”Red”と”Blue”のLayerで衝突判定を起きなくしたいので・・・。

こんな感じになります。

例えば、”Blue”Layer同士で衝突判定を起こしたく無い時は、左下(横Blue、縦Blue)のチェックを外すとできます。

このように設定すると、このような動きになります。


まとめ

Inspector ビューでLayerを設定します。

Editタブ → Project Settings → Physics 2D → Layer Collision Matrixで、Layer毎の衝突の有無を設定できます。

 


 

おまけ

カメラの”Culling Mask”でLayerのチェックを外すと、設定したカメラで非表示に出来ます。

 


 

参考

レイヤー – Unity マニュアル –