衝突レイヤーとマスク

はじめに

衝突レイヤーとマスクは、Godot 4においてどのオブジェクト同士が相互作用するかを制御する上で不可欠な要素です。

システム

  • Collision Layer(衝突判定レイヤー):オブジェクトが 存在する レイヤを指定します。
  • Collision Mask(衝突検知マスク):オブジェクトが 衝突を検出する 対象のレイヤを指定します。

サンプルプロジェクトでの設定例

ノードレイヤーマスク相互作用
プレイヤー12, 3敵とコインをスキャン
敵キャラ21プレイヤーをスキャン
コイン3(なし)特にスキャンする必要がない

セットアップ方法

Godot 4では、プロジェクト設定の[レイヤー名]>[2D物理]でレイヤーに名前を付けられます。これにより、インスペクターでの管理が大幅に効率化されます。

ノードの選択方法

Godot 4では、ビット操作を容易にするため、get_collision_layer_value(layer_number)set_collision_layer_value(layer_number, value)を使用することをオススメします。

# Enable layer 2
set_collision_layer_value(2, true)

# Check if masking layer 3
if get_collision_mask_value(3):
    print("Scanning layer 3")
Godot 3から4への移行ポイントまとめ
  • レイヤー用インスペクタUIが改善されました
  • set_collision_layer_value()などの新ヘルパーメソッドにより、複雑なビット演算処理(例: 1 << (layer - 1))が不要になりました