自分のシグナル
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()を使って送信します。
「プレイ」を押してスパイクの上を歩きます。ConsoleにOuch!と表示され、あなたの色がサンゴ色に変わります。その後、「確認」を押します。
自分で試してみよう
extends Area2D
func _ready():
body_entered.connect(_on_body_entered)
func _on_body_entered(body):
pass
シグナルと衝突のすべてのレッスン
自分で練習してみよう: Godotプレイグラウンド