土管10本で勝利
CoddyのGodotジャーニー「プロジェクト」セクションの一部。レッスン 28/36。
プレイヤーは負けることはできますが、まだ勝つことはできません。スコアが10になったら、You win!を表示して一時停止します。スコアが増える場所でテストしましょう。
if score == 10:
$HUD/Message.text = "You win!"
get_tree().paused = true最後に、プレイヤーがもう一度プレイできるようにします。ゲームが一時停止中にSpaceを押すと、シーンが再読み込みされます。MainはAlwaysなので、_processは引き続き実行されます。
func _process(delta):
if get_tree().paused and Input.is_action_just_pressed("jump"):
get_tree().paused = false
get_tree().reload_current_scene()Spaceは羽ばたきキーでもあります。flyerはPausableなので、ゲームが一時停止中は押されても反応しません。
チャレンジ
中級パイプを10本通過して勝ち、もう一度プレイしましょう。
- スコアが
10に達したら、$HUD/MessageにYou win!を表示して、ゲームを一時停止します。 - 一時停止中にスペース(
jump)を押すと、一時停止が解除され、シーンが再読み込みされます。
「プレイ」を押してパイプを10本通過すると、You win!と表示されます。スペースを押すと再開します。その後、「確認」を押します。
自分で試してみよう
extends Node2D
const PIPE = preload("res://pipe.tscn")
var score = 0
func _ready():
$PipeTimer.timeout.connect(_on_pipe_timer_timeout)
$Flyer.crashed.connect(_on_crash)
$HUD/Score.text = "0"
func _on_pipe_timer_timeout():
var pipe = PIPE.instantiate()
pipe.position = Vector2(700, randf_range(100, 250))
pipe.hit.connect(_on_crash)
pipe.scored.connect(_on_scored)
$Pipes.add_child(pipe)
func _on_crash():
$HUD/Message.text = "Game Over"
get_tree().paused = true
func _on_scored():
score += 1
$HUD/Score.text = str(score)
このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。
プロジェクトのすべてのレッスン
自分で練習してみよう: Godotプレイグラウンド