複数ステージのゲームを考える

動画を見たり、作ってみたりしているわけだが、マルチステージのマリオのようなゲームはどのように作るのだろうと構成を考えてみる

■ゲームコントロール(メイン)
■ゲームイントロ(スタート画面)
■ゲームオーバー
■オプション(設定)
■ステージ1
■ステージ2
・
・
・

こんな感じだろうか。
シューティングやプラットフォーマーで制作したのはステージに該当する部分なので、他を入れてサンプルを作ってみたいと思う。

適当なシーンを作ってみる

シーンチェンジに関して
ボタンクリック時にchange_scene_to_fileで変更しようとしたのだが、動画検索をすると違う方法の方が良いらしい

func _on_stage_1_button_pressed() -> void:
	get_tree().change_scene_to_file("res://scenes/stage_1.tscn")
extends Node

var current_scene = null

func _ready() -> void:
	var root = get_tree().root
	current_scene = root.get_child(root.get_child_count() - 1)

func switch_scene(res_path):
	call_deferred("_deferred_switch_scene", res_path)

func _deferred_switch_scene(res_path):
	current_scene.free()
	var s = load(res_path)
	current_scene = s.instantiate()
	get_tree().root.add_child(current_scene)
	get_tree().current_scene = current_scene

プロジェクトのオートロードに「scene_switcher.gd」を登録して上のスクリプトを入れる。
個々のボタンからは以下

func _on_start_button_pressed() -> void:
	#get_tree().change_scene_to_file("res://scenes/game.tscn")
	SceneSwitcher.switch_scene("res://scenes/game.tscn")

Github:https://github.com/morino5555/GodotExample/tree/main/multiplestage

コメントを残す 0

Your email address will not be published. Required fields are marked *