11.仕上げ
Godot Engineの2Dゲームを丁寧に見てきました。最後は、背景と、音楽と、キーボードショートカットを追加します。
背景色の設定
画面上部の「2D」タブを選び、2Dビューにします。「シーン」ドックで「main」シーンを開いた状態にします。また右側のサイドバーは「インスペクター」ドックを開いた状態にします。
まず、背景色を変更しましょう。「シーン」ドックの「Main」ノードに子ノードを追加します。右クリックして「子ノードを追加」を選び、「Node を新規作成」ダイアログを開きます。そして「ColorRect」ノードを選択して「作成」ボタンを押します。
Godot Engineのノードは、「シーン」ドックで上にあるものほど先に描画されます。そのため、「ColorRect」ノードをドラッグして「Main」の直下まで移動します。
続いて、2Dビューの上方に並ぶボタンの中から「アンカーのプリセット」の右下にある「Rect全面」を選択します。
そして、「インスペクター」ドックの「ColorRect」>「Color」をクリックして色を変更します。
背景画像の設定
色だけでなく画像も設定してみましょう。背景画像は公式のサンプルにはありませんが簡単に設定できます。
「シーン」ドックの「Main」ノードにもう1つ子ノードを追加します。右クリックして「子ノードを追加」を選び、「Node を新規作成」ダイアログを開きます。そして「TextureRect」ノードを選択して「作成」ボタンを押します。
この「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」を選択します。
「インスペクター」ドックの「AudioStreamPlayer」>「Stream」の「<空>」のところに、「ファイルシステム」ドックのart/House In a Forest Loop.oggをドロップします。
そして、「AudioStreamPlayer」>「Parameters」>「Looping」を「オン」にします。
続いて、「シーン」ドックで「DeathSound」を選択します。
「インスペクター」ドックの「AudioStreamPlayer」>「Stream」の「<空>」のところに、「ファイルシステム」ドックのart/gameover.wavをドロップします。
main.gdのnew_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 のイベントの設定」ダイアログが開きますので、「Enter」キーを押して「OK」ボタンを押します。
もう一度+ボタンをクリックして、「Space」キーも登録します。キーを押しても上手く選択できない場合は、ツリーをたどって選んでください。
キーを登録できたら「閉じる」ボタンを押して設定を終了します。
キーボード ショートカットの適用
次に「HUD」シーンを開きます。そして「ツリー」ドックで「StartButton」ノードを選択します。
「インスペクター」ドックの「BaseButton」>「Shortcut」>「Shortcut」の「<空>」の部分をクリックして、「新規 Shortcut」を選択します。
「<空>」だった場所に追加された「Shortcut」をクリックします。すると「Events」や「Resouce」といった項目が現れます。
「Events」の値をクリックして、「要素を追加」をクリックします。
「0」という項目が現れるので「<空>」の部分をクリックします。
表示されるリストの中から「新規 InputEventAction」を選びます。
「<空>」だった場所に追加された「InputEventAction」をクリックします。
そして「Action」の項目に「start_game」と入力します。そして「Ctrl+S」で変更を保存します。
この状態でゲームを再生すれば、「Enter」あるいは「Space」キーを押すことでゲームの「StartButton」を押したのと同じ状態になります。
