ゲームの開始と終了方法
最後のステップとして、ゲームにスタートボタンと「ゲームオーバー」状態を追加してください。
ゲーム開始方法
現在ゲームを実行するとすぐに開始されますが、起動用のボタンを追加してください。
MainをCanvasLayerの子要素として追加し、そこにCenterContainerを追加し、そのレイアウトをフル矩形に設定します。次に、TextureButtonをその子要素として追加してください。このボタンにStartという名前を付け、その通常状態のテクスチャとしてSTART (48 x 8).png画像を設定します。
スクリプトの上部に参照を追加:
@onready var start_button = $CanvasLayer/CenterContainer/Start
このボタンのpressedテクスチャをMainに接続し、このコードを追加してください。
func _on_start_pressed():
start_button.hide()
new_game()
new_game()関数はゲームの開始処理を担当するため、_ready()を変更し、敵を生成しないようにしつつ、ボタンが表示されるようにするだけです。
func _ready():
start_button.show()
# spawn_enemies()
次に、new_game()関数を追加してください。
func new_game():
score = 0
$CanvasLayer/UI.update_score(score)
$Player.start()
spawn_enemies()
現在は、シーンを実行するとボタンが表示され、クリックするとゲームが開始されるはずです。
ゲーム終了方法
CenterContainerの子として TextureRect を追加し、ノード名を GameOver に設定します。画像には GAME_OVER (72 x 8).png を使用します。この画像はスタートボタンと重なりますが、問題ありません。ゲームでは一度に表示するのは一つだけだからです。
スクリプトの上部に別の参照を追加:
@onready var game_over = $CanvasLayer/CenterContainer/GameOver
また、_ready() に game_over.hide() を追加してください。
Main でプレイヤーの died シグナルを接続してください。
func _on_player_died():
get_tree().call_group("enemies", "queue_free")
game_over.show()
await get_tree().create_timer(2).timeout
game_over.hide()
start_button.show()
この操作で2秒間「ゲームオーバー」画面が表示され、その後スタートボタンに戻るので、再度プレイできます。ぜひお試しいただき、何ゲームか続けて遊んでみてください。
| 前へ | 次へ |
|---|