GDScriptの使い方をChatGPTに聞く

一定時間ごとに処理を行う・タイマー処理

<< 戻る

あなた:
GDScript2で、一定時間ごとに処理をさせる方法は
ChatGPT:

GDScript 2(Godot 4以降)で「一定時間ごとに処理をさせる」方法はいくつかありますが、代表的な方法をいくつか紹介します。


✅ 方法1:Timer ノードを使う(おすすめ)

GodotのTimerノードを使うと、一定間隔で自動的に処理を呼び出せます。

ステップ

  1. Timerノードをシーンに追加する(名前: MyTimerなど)

  2. Wait Timeに間隔(例:1.0秒)を設定

  3. AutostartをONにする

  4. timeoutシグナルを接続する

GDScript 例(Godot 4 / GDScript 2)

gdscript
extends Node func _ready(): $MyTimer.timeout.connect(on_timer_timeout) func on_timer_timeout(): print("一定時間経過!")

✅ 方法2:awaitSceneTreeTimerを使う(コードだけで完結)

非同期処理(await)で時間待ちも可能です。

GDScript 例

gdscript
extends Node func _ready(): run_timer_loop() func run_timer_loop() -> void: while true: await get_tree().create_timer(1.0).timeout print("1秒ごとに処理実行")

✅ 方法3:_process()_physics_process()を使って自前でカウント

タイマーを使わずに自分で時間を計測したい場合はこちら。

GDScript 例

gdscript
extends Node var time_accumulator := 0.0 var interval := 1.0 func _process(delta: float) -> void: time_accumulator += delta if time_accumulator >= interval: time_accumulator = 0.0 print("1秒経過!")

おすすめは?

  • Timerノード:視覚的に管理しやすく、信頼性が高い

  • await create_timer():コードだけで済ませたいときに便利

  • _process():細かい制御が必要な場合に


どういう場面で使いたいか教えてくれたら、もっと合ったやり方も提案できるよ!

あなた:
timeoutシグナルを接続する方法は
ChatGPT:

timeout シグナルを接続する方法は2つあります:エディタでGUIから接続する方法と、GDScriptコードから動的に接続する方法です。ここでは後者、「コードから接続する方法」を詳しく説明します。


✅ GDScriptでtimeoutシグナルを接続する方法

例:Timerノードのtimeoutシグナルを関数に接続

gdscript
extends Node func _ready(): var timer = $Timer timer.timeout.connect(on_timeout) func on_timeout(): print("タイマーの時間になりました!")

💡 タイマーを動的に作って接続する場合

gdscript
extends Node func _ready(): var timer = Timer.new() timer.wait_time = 1.0 timer.autostart = true add_child(timer) timer.timeout.connect(on_timeout) func on_timeout(): print("動的に作ったタイマーが発火")

🔒 Godot 4.0以降(GDScript 2)でのポイント

  • .connect() の書き方は以下のように「関数名だけ」を渡します(コールバックではなく関数参照

  • timeout.connect(on_timeout) ←これは on_timeout 関数の参照を渡している


👀 エラー対策メモ

  • 関数名のスペルミスや、シグナル名のタイプミスに注意!

  • ノードがまだ存在していないタイミング(_ready()より前)で接続しないように!


必要なら、エディタでの接続方法も説明できるよ〜!

あなた:
GUIから接続する際の手順は
ChatGPT:

GodotエディタのGUIから Timer ノードの timeout シグナルを接続する手順は以下の通りです!


✅ GUIから timeout シグナルを接続する方法(Godot 4対応)

🎯 目的

Timer ノードの timeout シグナルが発火したときに、自分のスクリプト内の関数が呼ばれるように接続します。


🪜 手順

  1. Timer ノードを選択

    • シーンツリーで Timer ノードをクリックします。

  2. 右側の「ノード」タブを開く

    • インスペクターの右隣にある「ノード」タブ(⚙️みたいなアイコン)をクリックします。

  3. timeout() シグナルを探す

    • 一覧に表示されている「timeout()」をダブルクリック、または選択して右下の「接続(Connect)」ボタンを押します。

  4. 接続先と関数名を設定

    • ポップアップが出るので:

      • 接続先ノード(例:Mainなど、自分のスクリプトがアタッチされているノード)を選ぶ

      • メソッド名はデフォルトで on_Timer_timeout(ノード名ベース)になります。変更してもOK。

    • 「接続」ボタンを押す

  5. スクリプトに関数が自動生成される

    gdscript
    func _on_timer_timeout() -> void: print("タイマー発火!")

💡 補足Tips

  • ノード名が Timer なら、関数名は func _on_timer_timeout() になります

  • 自動で connect() されるので、自分で書く必要はありません

  • この方法は初心者に優しく、デバッグもしやすいです!


必要ならスクリーンショット風に解説したり、アニメーションGIFっぽい説明もできるよ!欲しい?