エリア同士の接触
CoddyのGodotジャーニー「シグナルと衝突」セクションの一部。レッスン 6/27。
Godotのノードには、シグナルが組み込まれています。Area2Dには、よく使うシグナルが4つあります。
body_enteredとbody_exited:ボディが入ってきた、または出ていったことを示します。ボディとは、CharacterBody2DやStaticBody2Dのような、固体のものです。area_enteredとarea_exited:別のエリアが入ってきた、または出ていったことを示します。
エリアは、別のエリアに対してbody_enteredを送信しません。落ちてくる星はエリアなので、かごにはarea_enteredが必要です。
func _ready():
area_entered.connect(_on_star_caught)この関数は入ってきたエリアを受け取るので、_on_body_entered(body)のように、値を1つ受け取ります。名前は自由に付けられます。
チャレンジ
簡単かごが落ちてくる星に気づくようにしましょう。
- 星はボディではなくエリアです。
_ready()で、body_enteredの代わりにarea_enteredを接続します。 - 関数は
_on_star_caughtのままにします。
「プレイ」を押すと、コンソールにCaught a star!と2回、星1つにつき1回ずつ表示されます。その後、「確認」を押します。
自分で試してみよう
extends Area2D
func _ready():
body_entered.connect(_on_star_caught)
func _on_star_caught(star):
print("Caught a star!")
シグナルと衝突のすべてのレッスン
自分で練習してみよう: Godotプレイグラウンド