エリア同士の接触
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つ受け取ります。名前は何でもかまいません。
チャレンジ
簡単2つの星がバスケットに落ちますが、コンソールには何も表示されません。バスケットは間違ったシグナルを監視しています。星を1つ捕まえるたびにCaught a star!と表示するようにしましょう。
自分で試してみよう
extends Area2D
func _ready():
body_entered.connect(_on_star_caught)
func _on_star_caught(star):
print("Caught a star!")
このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。
シグナルと衝突のすべてのレッスン
自分で練習してみよう: Godotプレイグラウンド