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()を使ってシグナルを送信します。

スパイクの上に乗ってください。コンソールにOuch!と表示され、あなたの色がサンゴ色に変わります。

自分で試してみよう

extends Area2D

func _ready():
	body_entered.connect(_on_body_entered)

func _on_body_entered(body):
	pass
quiz icon腕試し

このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。

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

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