Collisionにおける、LayerとMaskの理解
https://gyazo.com/f9190a92357a39b37abdd25c78c562fc
LayerとMaskは、物理Node (RigidBody2D, StaticBody2D, KinematicBody2D) のプロパティの1つ
CollisionShape のプロパティではない(あくまで形を提供するだけ。衝突は物理Nodeの役目)
Layer : 物理オブジェクトの衝突判定の存在する層(デフォ = Layer1)
Mask : 衝突相手のLayerを指定(デフォ = Layer1)
初期値だと、全てがぶつかる。
Layerは自分、Maskは相手 と覚える。
(複数指定できる)
相手の攻撃は当たるが、味方の攻撃はすり抜ける、などを実装するのに便利。
(あとは、背景タイルはすり抜けるが、足場・壁タイルはぶつかるなど)
Layerに名前をつける
すると管理しやすい
1. Project > Project Settings > General
2. 右メニュー > Layer Names > 2d Physics
Player, Terrain(地形) などで分けるとわかりやすい
あとは、Enemy, Bulletなどか?
https://gyazo.com/c91d3d1550ef1df1a9ce87022c8d02d6
Maskについて
Maskは、衝突する相手の層を指定する。
2つの衝突物のうち、片方だけ相手のMaskをチェックしておけばいい
Layerは必須
Maskは片方だけでいい
でも、チュートリアル動画の方では両方チェックしてたので、両方チェックしたほうが良さそう
まとめ
Collision.
Layer : 自分の存在する層
Mask : 衝突できる相手の層
別の層に分けて作ることで、衝突/すり抜けを管理しやすくなる