【Godot4】Timerノードを使いこなす【signal】

Timerノードを使って、時間を管理しよう。

ゲームにおいて、時間管理は非常に重要です。

Godotでは、Timerノードを使って、簡単に管理することができます。

1.スクリプトからTimerノードを使用する方法

「1秒待つ」など、ごく簡単にTimerノードを使用したい場合は、スクリプトに、以下の一行を追加するだけで可能です。

	#1秒待つ
	await get_tree().create_timer(1.0).timeout

2.シーンツリーにTimerノードを追加する方法

Timerノードをシーンツリーに追加することで、複数のタイマーを同時に使用するなどの、複雑な時間管理をすることが可能になります。

ふたつのTimerノードを使用したプログラムを作成します。

このプログラムでは、以下の2つのイベント(敵の出現、アイテムの出現)が異なるタイミングで繰り返し発生します:

  • 🔔 敵の出現(3秒ごと)
  • 💰 アイテムの出現(5秒ごと)

それぞれのイベントは Timer ノードによって制御され、イベントが発生するとラベルにログが表示されます。

🛠️ 作成手順

1.ノード構成

  1. 各ノードの設定
  • EnemyTimer
    • Wait Time: 3
    • Autostart: On
    • One Shot: Off
  • ItemTimer
    • Wait Time: 5
    • Autostart: On
    • One Shot: Off
  • LogLabel
    • 初期テキスト: "イベントログ:" +改行

3.シグナルの接続

“EnemyTimer”を選択した状態で、timeout シグナルを選び、スクリプトに接続します。

“ItemTimer”も同様に、timeout シグナルをスクリプトに接続します。

  1. スクリプト(node_2d.gd)
extends Node2D

@onready var enemy_timer = $EnemyTimer
@onready var item_timer = $ItemTimer
@onready var log_label = $LogLabel

func _ready() -> void:
	pass # Replace with function body.


func _process(delta: float) -> void:
	pass


func _on_enemy_timer_timeout() -> void:
	log_event("敵が出現!")


func _on_item_timer_timeout() -> void:
	log_event("アイテムが出現!")


func log_event(message: String):
	var current_text = log_label.text
	log_label.text = current_text + message + "\n"

このプログラム(シーン)を実行すると、3秒ごとに”敵が出現!”と、表示され、5秒ごとに”アイテムが出現!”と、表示されるようになります。

まとめ

Timerノードはゲーム作成において、重要なノードです。

timeout シグナルを起点に、ゲーム内の時間をスマートに処理しましょう。

コメント

タイトルとURLをコピーしました