SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

DeveloperZine(デベロッパージン)- エンジニアの意思決定を支える技術情報メディア ProductZine

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

Godot Engine 2Dゲーム開発入門

【詳細解説】Godot Engineで始める2Dゲーム開発──公式サンプルを試してみよう

Godot Engine 2Dゲーム開発入門 第2回

11.仕上げ

 Godot Engineの2Dゲームを丁寧に見てきました。最後は、背景と、音楽と、キーボードショートカットを追加します。

背景色の設定

 画面上部の「2D」タブを選び、2Dビューにします。「シーン」ドックで「main」シーンを開いた状態にします。また右側のサイドバーは「インスペクター」ドックを開いた状態にします。

エディターの状態
エディターの状態

 まず、背景色を変更しましょう。「シーン」ドックの「Main」ノードに子ノードを追加します。右クリックして「子ノードを追加」を選び、「Node を新規作成」ダイアログを開きます。そして「ColorRect」ノードを選択して「作成」ボタンを押します。

「Node を新規作成」ダイアログ
「Node を新規作成」ダイアログ
ColorRect
ColorRect

 Godot Engineのノードは、「シーン」ドックで上にあるものほど先に描画されます。そのため、「ColorRect」ノードをドラッグして「Main」の直下まで移動します。

「ColorRect」を上に移動
「ColorRect」を上に移動

 続いて、2Dビューの上方に並ぶボタンの中から「アンカーのプリセット」の右下にある「Rect全面」を選択します。

Rect全面
Rect全面
「Rect全面」を選択
「Rect全面」を選択

 そして、「インスペクター」ドックの「ColorRect」>「Color」をクリックして色を変更します。

色の変更
色の変更

背景画像の設定

 色だけでなく画像も設定してみましょう。背景画像は公式のサンプルにはありませんが簡単に設定できます。

 「シーン」ドックの「Main」ノードにもう1つ子ノードを追加します。右クリックして「子ノードを追加」を選び、「Node を新規作成」ダイアログを開きます。そして「TextureRect」ノードを選択して「作成」ボタンを押します。

「Node を新規作成」ダイアログ
「Node を新規作成」ダイアログ

 この「TextureRect」ノードを、「ColorRect」ノードの真下に、ドラッグして移動します。そして「インスペクター」ドックの「TextureRect」>「Texture」に、「ファイルシステム」ドックのart/playerGrey_walk2.pngをドロップします。

 そして、「インスペクター」ドックの設定を次のようにします。

  • 「TextureRect」>「Expand Mode」を「Fit Width」
  • 「Control」>「Layout」>「Transform」>「Size」>「x」を「480」
  • 「Control」>「Layout」>「Transform」>「Size」>「y」を「480」
  • 「Control」>「Layout」>「Transform」>「Position」>「y」を「120」
  • 「CanvasItem」>「Visibility」>「Modulate」>「Hex」を「ffffff4f」

 これで背景色と背景画像を設定できました。

背景色と背景画像
背景色と背景画像

BGMと効果音の設定

 「シーン」ドックの「Main」ノードを右クリックして、「子ノードを追加」を選び、「AudioStreamPlayer」を2つ作成します。そして、それぞれの名前を「Music」と「DeathSound」にします。

「Music」と「DeathSound」
「Music」と「DeathSound」

 「シーン」ドックで「Music」を選択します。

 「インスペクター」ドックの「AudioStreamPlayer」>「Stream」の「<空>」のところに、「ファイルシステム」ドックのart/House In a Forest Loop.oggをドロップします。

 そして、「AudioStreamPlayer」>「Parameters」>「Looping」を「オン」にします。

「Music」の設定
「Music」の設定

 続いて、「シーン」ドックで「DeathSound」を選択します。

 「インスペクター」ドックの「AudioStreamPlayer」>「Stream」の「<空>」のところに、「ファイルシステム」ドックのart/gameover.wavをドロップします。

「DeathSound」の設定
「DeathSound」の設定

 main.gdnew_game関数とgame_over関数の末尾に処理を追加します。

# ゲーム終了
func game_over() -> void:
	$ScoreTimer.stop()
	$MobTimer.stop()
	$HUD.show_game_over()	# ゲーム終了
	$Music.stop()		# BGM停止
	$DeathSound.play()	# 死亡音再生


# 新ゲーム開始
func new_game() -> void:
	score = 0
	$Player.start($StartPosition.position)
	$StartTimer.start()
	$HUD.update_score(score)		# 得点の更新
	$HUD.show_message("Get Ready")	# メッセージの表示
	get_tree().call_group("mobs", "queue_free")		# Mobをまとめて削除
	$Music.play()		# BGM再生

キーボード ショートカットの準備

 このサンプルゲームは、キーボードで操作します。そのため、ゲーム開始ボタンの操作もキーボードでおこなえると遊びやすいです。

 トップメニューの「プロジェクト」>「プロジェクト設定」で「プロジェクト設定」ダイアログを開き、「インプットマップ」タブを選択します。

「インプットマップ」タブ
「インプットマップ」タブ

 「新しいアクションの追加」に「start_game」と入力して「追加」ボタンを押します。

「start_game」を追加
「start_game」を追加

 追加された「start_game」の右横にある+ボタンをクリックします。

「start_game」右横にある+ボタンをクリック
「start_game」右横にある+ボタンをクリック

 「start_game のイベントの設定」ダイアログが開きますので、「Enter」キーを押して「OK」ボタンを押します。

「start_game のイベントの設定」ダイアログ
「start_game のイベントの設定」ダイアログ

 もう一度+ボタンをクリックして、「Space」キーも登録します。キーを押しても上手く選択できない場合は、ツリーをたどって選んでください。

「インプットマップ」タブ
「インプットマップ」タブ

 キーを登録できたら「閉じる」ボタンを押して設定を終了します。

キーボード ショートカットの適用

 次に「HUD」シーンを開きます。そして「ツリー」ドックで「StartButton」ノードを選択します。

 「インスペクター」ドックの「BaseButton」>「Shortcut」>「Shortcut」の「<空>」の部分をクリックして、「新規 Shortcut」を選択します。

「新規 Shortcut」を選択
「新規 Shortcut」を選択

 「<空>」だった場所に追加された「Shortcut」をクリックします。すると「Events」や「Resouce」といった項目が現れます。

Shortcut
Shortcut

 「Events」の値をクリックして、「要素を追加」をクリックします。

要素を追加
要素を追加

 「0」という項目が現れるので「<空>」の部分をクリックします。

「0」の項目
「0」の項目

 表示されるリストの中から「新規 InputEventAction」を選びます。

「新規 InputEventAction」を選ぶ
「新規 InputEventAction」を選ぶ

 「<空>」だった場所に追加された「InputEventAction」をクリックします。

「InputEventAction」をクリック
「InputEventAction」をクリック

 そして「Action」の項目に「start_game」と入力します。そして「Ctrl+S」で変更を保存します。

「start_game」と入力
「start_game」と入力

 この状態でゲームを再生すれば、「Enter」あるいは「Space」キーを押すことでゲームの「StartButton」を押したのと同じ状態になります。

次のページ
まとめ

この記事は参考になりましたか?

Godot Engine 2Dゲーム開発入門連載記事一覧

もっと読む

この記事の著者

柳井 政和(ヤナイ マサカズ)

クロノス・クラウン合同会社 代表社員http://crocro.com/オンラインソフトを多数公開。プログラムを書いたり、ゲームを作ったり、記事を執筆したり、マンガを描いたり、小説を書いたりしています。「めもりーくりーなー」でオンラインソフト大賞に入賞。最近は、小説家デビューして小説も書いています(『裏切りのプログラム』他)。面白いことなら何でもOKのさすらいの企画屋です。 

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

CodeZine(コードジン)
https://codezine.jp/article/detail/21370 2025/05/28 11:00

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー