Menu
CoddyTech

自分のシグナル

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)

このようなリスナーは、もうすぐ作成します。このレッスンでは、スパイクだけを編集します。

challenge icon

チャレンジ

簡単

スパイクにシグナルを追加し、誰かが踏んだときに送信しましょう。

  1. spikes.gdの先頭でsignal hitを宣言します。
  2. _on_body_enteredでhit.emit()を使って送信します。

「プレイ」を押してスパイクの上を歩きます。ConsoleにOuch!と表示され、あなたの色がサンゴ色に変わります。その後、「確認」を押します。

自分で試してみよう

extends Area2D

func _ready():
	body_entered.connect(_on_body_entered)

func _on_body_entered(body):
	pass

シグナルと衝突のすべてのレッスン

自分で練習してみよう: Godotプレイグラウンド