時間内にクリアしよう
CoddyのGodotジャーニー「ゲームのルール」セクションの一部。レッスン 24/29。
カウントダウンは0になっても何も起こらず、-1、-2と進み続けます。次のルールを追加しましょう。
- 時間が0になったら、プレイヤーの負けです。
Time's up!と表示して、ゲームを停止します。 - プレイヤーが先に旗に到達したら、勝ちです。
You win!と表示して、ゲームを停止します。
get_tree().paused = trueでゲームを停止します。一時停止すると時計も止まるため、時間は終了した時点のままになります。また、プレイヤーも止まるので、時間切れのあとに誰かが勝つことはありません。
if time_left == 0:
$HUD/Message.text = "Time's up!"
get_tree().paused = trueチャレンジ
簡単カウントダウンを、負ける可能性のあるレースにしましょう。
_on_clock_timeout()で、ラベルの行の後に、time_leftが0になったら、$HUD/Message.textを"Time's up!"に設定し、ゲームを一時停止します。_on_goal_body_entered(body)で、"You win!"の後にゲームを一時停止します。
「プレイ」を押して待ちます。Time: 0になると、ゲームが停止してTime's up!と表示されます。その後、「確認」を押します。
自分で試してみよう
extends Node2D
var time_left = 10
func _ready():
$HUD/Time.text = "Time: %d" % time_left
$Goal.body_entered.connect(_on_goal_body_entered)
$Clock.timeout.connect(_on_clock_timeout)
func _on_goal_body_entered(body):
if body.is_in_group("player"):
$HUD/Message.text = "You win!"
func _on_clock_timeout():
time_left -= 1
$HUD/Time.text = "Time: %d" % time_left
このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。
ゲームのルールのすべてのレッスン
自分で練習してみよう: Godotプレイグラウンド