最終確認日

Godotにおけるbody_enteredとarea_enteredの違い

body_enteredarea_entered は、Area2D ノードが他のノードと交差したときに発生するシグナルであるが、対象となるノードの種類が異なる。

  • body_entered(body: Node)

    • 発信元: Area2D
    • 対象: PhysicsBody2D(例: CharacterBody2D, RigidBody2D, StaticBody2D
    • 用途: プレイヤーや敵など「物理挙動を持つオブジェクト」が入ったことを検知する
    • 例: プレイヤーがトラップエリアに入ったときにダメージを与える
  • area_entered(area: Area2D)

    • 発信元: Area2D
    • 対象: 別の Area2D
    • 用途: センサー同士の重なり、エリア効果の検知など、エリア間の相互作用を検出す
    • 例: 毒ガスエリアとプレイヤーの感知エリアが重なったときにステータス異常を発生させる

補足

  • どちらも monitoring(自身)および monitorable(相手)プロパティが true である必要がある
  • 衝突レイヤーとマスクが一致していないとイベントは発生しない
サイトアイコン
公開日
更新日