自分のシグナル
CoddyのGodotジャーニー「シグナルと衝突」セクションの一部。レッスン 7/27。
ノードに独自のシグナルを持たせることができます。スクリプトの先頭で、signalを使って宣言します。
extends Area2D
signal hitイベントが発生したら、emit()で送信します。
func _on_body_entered(body):
hit.emit()古いコードでは、emit_signal("hit")を使うことがあります。これは同じ動作をします。
トゲは、誰かが攻撃を受けたことだけを通知します。攻撃を受けたときに何が起こるかは、それをリッスンするコード次第です。ここでは、Mainのスクリプトがhitをリッスンします。
extends Node2D
# spikes に hit シグナルが追加されたら、Main はそれを受信します。
func _ready():
if $Spikes.has_signal("hit"):
$Spikes.hit.connect(_on_spikes_hit)
func _on_spikes_hit():
print("Ouch!")
$Player.modulate = Color(1, 0.42, 0.42)このようなリスナーは、まもなく自分で書くことになります。このレッスンでは、トゲだけを編集します。
チャレンジ
簡単スパイクにシグナルを追加し、誰かが踏んだときに送信します。
spikes.gdの先頭でsignal hitを宣言します。_on_body_entered内で、hit.emit()を使ってシグナルを送信します。
スパイクの上に乗ってください。コンソールにOuch!と表示され、あなたの色がサンゴ色に変わります。
自分で試してみよう
extends Area2D
func _ready():
body_entered.connect(_on_body_entered)
func _on_body_entered(body):
pass
このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。
シグナルと衝突のすべてのレッスン
自分で練習してみよう: Godotプレイグラウンド