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.ノード構成

- 各ノードの設定
EnemyTimer
Wait Time
:3
Autostart
:On
One Shot
:Off
ItemTimer
Wait Time
:5
Autostart
:On
One Shot
:Off
LogLabel
- 初期テキスト:
"イベントログ:"
+改行
- 初期テキスト:
3.シグナルの接続
“EnemyTimer”を選択した状態で、timeout
シグナルを選び、スクリプトに接続します。


“ItemTimer”も同様に、timeout
シグナルをスクリプトに接続します。
- スクリプト(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
シグナルを起点に、ゲーム内の時間をスマートに処理しましょう。
コメント