こんばんは、ちきなるです。
地面にはぶつかって欲しいけど、建物にはぶつかって欲しくない。
みたいに、衝突の判定を分けたい時があります。
そんな時、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のチェックを外すと、設定したカメラで非表示に出来ます。
参考
コメント