プロセスモード
CoddyのGodotジャーニー「ゲームのルール」セクションの一部。レッスン 14/29。
一時停止中のゲームでは、すべてのノードが停止します。「ゲームオーバー」のメッセージを点滅させたり、一時停止メニューを表示したりするなど、動き続けるべきノードもあります。
ノードのprocess_modeによって、次の動作が決まります。
Node.PROCESS_MODE_INHERIT:親ノードと同じ動作をします。これがデフォルトです。Node.PROCESS_MODE_PAUSABLE:ゲームが一時停止すると停止します。Node.PROCESS_MODE_ALWAYS:一時停止中かどうかにかかわらず、動き続けます。
$Music.process_mode = Node.PROCESS_MODE_ALWAYSスクリプトはBlinkというTimerを使って「ゲームオーバー」を点滅させるようになりました。一時停止するとタイマーも停止するため、メッセージは点滅しません。
チャレンジ
簡単ゲームが一時停止中も、Game Over の点滅を続けます。
_ready()で、Blinkタイマーを取得します。- その
process_modeをNode.PROCESS_MODE_ALWAYSに設定します。
「プレイ」を押してライフを3つ失うと、停止したゲーム画面の上でGame Overが点滅します。その後、「確認」を押します。
自分で試してみよう
extends Node2D
var lives = 3
func _ready():
$HUD/Lives.text = "Lives: %d" % lives
$Player.hurt.connect(_on_player_hurt)
$Blink.timeout.connect(_on_blink_timeout)
func _on_player_hurt():
lives -= 1
$HUD/Lives.text = "Lives: %d" % lives
if lives == 0:
$HUD/GameOver.visible = true
get_tree().paused = true
func _on_blink_timeout():
if lives == 0:
$HUD/GameOver.visible = not $HUD/GameOver.visible
ゲームのルールのすべてのレッスン
自分で練習してみよう: Godotプレイグラウンド