![見出し画像](https://assets.st-note.com/production/uploads/images/113624180/rectangle_large_type_2_9080d3924f4f8ea8e5f3c9418b920844.png?width=1200)
GODOT Game engineでゲームを作ってみよう!(その3)
どうも僕です。
前回は敵さんを登場させました。
今回はその2のやり忘れと、
スコアとかタイトルを追加*し、仕上げます。
*GODOT DOCSに従い、
残りの「ヘッドアップディスプレイ」と「仕上げ」を実装します。
その2のやり忘れ
mobと主人公の接触時のシグナルと
main.gdファイルのgame_over()メソッドの紐づけを
忘れていたので設定しよう。
main.tscnをダブルクリック。
![](https://assets.st-note.com/img/1692528885845-exrG1S46QZ.png)
左側Mainシーン配下のArea2Dを選択し、
![](https://assets.st-note.com/img/1692529019552-yCplMV3MHh.png)
右側「ノード」タブをクリック。
![](https://assets.st-note.com/img/1692529068311-ZurmJmFlw0.png)
hit()があるので右クリの接続を選択する。
![](https://assets.st-note.com/img/1692529116662-IfDIGF7tql.png)
Pickをぽちー。
![](https://assets.st-note.com/img/1692529134707-eCshwyG4wl.png)
game_over()を選択してOKぽちー。
![](https://assets.st-note.com/img/1692529188992-qelfZzXwKL.png)
接続ぽちー。
![](https://assets.st-note.com/img/1692529212030-Vy3MEzRxmM.png)
main.gdファイルのgame_over()メソッドの横に
緑色の接続アイコンが出ればOKっす。
![](https://assets.st-note.com/img/1692529501025-G0KqE7DdIn.png)
ここで一度保存しよう。(Ctrl+Sキー)
ヘッドアップディスプレイ
タイトル/スコア表示用シーンを追加
メニューのシーン>新規シーンを選択する。
![](https://assets.st-note.com/img/1692430380060-j3D04do88n.png)
その他ノードを選び、
![](https://assets.st-note.com/img/1692430434736-ZfZzeiyEba.png)
CavasLayerで検索し、「CavasLayer」を作成しよう。
![](https://assets.st-note.com/img/1692428842314-yByf5p3twm.png?width=1200)
シーンの名前をHUDにしよう。
![](https://assets.st-note.com/img/1692430466464-8yLG42kzvG.png)
HUDを右クリックし、孫ノードを追加する。
![](https://assets.st-note.com/img/1692430523542-BRwRLRHZK6.png)
Labelを二つ追加し、それぞれ以下の名前に変更する。
・ScoreLabel
・Message
![](https://assets.st-note.com/img/1692430597970-1tZzRBpDPQ.png?width=1200)
![](https://assets.st-note.com/img/1692430607377-pRjw29dhgW.png)
HUDを右クリックし、子ノードを追加する。
ButtonとTimerを一つずつ追加し、それぞれ以下の名前に変更する。
・StartButton
・MessageTimer
![](https://assets.st-note.com/img/1692430668713-DVBmUWrBfj.png?width=1200)
![](https://assets.st-note.com/img/1692430690403-rZhhRkWWYO.png?width=1200)
![](https://assets.st-note.com/img/1692430756463-xCdSKzxp0v.png)
ここで一度保存しよう。(Ctrl+Sキー)
![](https://assets.st-note.com/img/1692431355487-u8hiLGu5cl.png?width=1200)
ScoreLabelを選択し、右側インスペクターから
Textに”0”を入力し、
![](https://assets.st-note.com/img/1692431909202-HP31FfTvgt.png)
Font Sizes(Control > Theme Overrides > Font Sizes)を64ptにする。
![](https://assets.st-note.com/img/1692431616918-Frun8EXdY1.png)
中央のシーン表示に
ScoreLabelの位置を示す表示がされるので
⊕アイコン(アンカーのプリセット)をクリックして中央上を選択しよう。
![](https://assets.st-note.com/img/1692431771839-dJQSI7xUtJ.png)
![](https://assets.st-note.com/img/1692431885580-FeAlPZy5vm.png?width=1200)
Messageを選択し、右側インスペクターから
Textに”スライムから逃げろゲーム”を入力し、
![](https://assets.st-note.com/img/1692432117332-WTxI5WSpFe.png)
Font Sizes(Control > Theme Overrides > Font Sizes)を64ptにする。
![](https://assets.st-note.com/img/1692432156681-p9yYZJpi6V.png)
中央のシーン表示に
Messageの位置を示す表示がされるので
⊕アイコン(アンカーのプリセット)をクリックして中央を選択しよう。
![](https://assets.st-note.com/img/1692432236641-pnD2jgOgU7.png)
![](https://assets.st-note.com/img/1692432247541-ybpQ1OAAG1.png?width=1200)
StartButtonを選択し、右側インスペクターから
Textに”START”を入力し、
![](https://assets.st-note.com/img/1692432355329-Ta19mip3Hu.png)
Font Sizes(Control > Theme Overrides > Font Sizes)を64ptにする。
![](https://assets.st-note.com/img/1692432411697-kZV4A0Ya59.png)
中央のシーン表示に
StartButtonの位置を示す表示がされるので
⊕アイコン(アンカーのプリセット)をクリックして中央下を選択しよう。
![](https://assets.st-note.com/img/1692432599390-Ot48AWODwS.png)
![](https://assets.st-note.com/img/1692432645677-vRJReaVC2Y.png?width=1200)
MessageTimerを選択し、右側インスペクターから
Wait Timeに2sを設定し、
One Shotにチェックを入れる。
![](https://assets.st-note.com/img/1692530398448-sQfrhHoAec.png)
ここで一度保存しよう。(Ctrl+Sキー)
次にHUDにGDスクリプトを追加する。
HUDを選択し、巻物アイコン+をクリックしよう。
![](https://assets.st-note.com/img/1692432787245-DZINDg4qhN.png)
作成をクリックしよう。
![](https://assets.st-note.com/img/1692432817069-A1tWerWjK9.png)
以下のように書き換える。
extends CanvasLayer
# Notifies `Main` node that the button has been pressed
signal start_game
# Called when the node enters the scene tree for the first time.
func _ready():
pass # Replace with function body.
# Called every frame. 'delta' is the elapsed time since the previous frame.
func _process(delta):
pass
func show_message(text):
$Message.text = text
$Message.show()
$MessageTimer.start()
func show_game_over():
show_message("Game Over")
# Wait until the MessageTimer has counted down.
await $MessageTimer.timeout
$Message.text = "スライムから逃げろゲーム"
$Message.show()
# Make a one-shot timer and wait for it to finish.
await get_tree().create_timer(1.0).timeout
$StartButton.show()
func update_score(score):
$ScoreLabel.text = str(score)
func _on_start_button_pressed():
$StartButton.hide()
start_game.emit()
func _on_message_timer_timeout():
$Message.hide()
![](https://assets.st-note.com/img/1692529859794-xfToe3mdDy.png?width=1200)
ここで一度保存しよう。(Ctrl+Sキー)
さらにシグナルをプログラムと紐づける。
StartButtonを選択し、右側「ノード」タブを選択する。
![](https://assets.st-note.com/img/1692433878954-Zg6Yr74aDo.png)
BaseButtonの下にpressed()があるから
右クリ「接続」を選択する。
![](https://assets.st-note.com/img/1692433986305-uOUccYIUgb.png)
そのまま接続をぽちー。
![](https://assets.st-note.com/img/1692434011410-AGD8NTWfOy.png)
MessageTimerを選択し、右側「ノード」タブを選択する。
![](https://assets.st-note.com/img/1692434092717-sxiIj1NbB3.png)
Timerの下にtimeout()があるので
右クリ「接続」を選択する。
![](https://assets.st-note.com/img/1692434177677-TbfExGPIbN.png)
そのまま接続をぽちー。
![](https://assets.st-note.com/img/1692434198790-G83kAlQgjS.png)
hud.gdのプログラムで
以下のように、緑色の接続アイコン*が付いてることを確認しよう。
*メソッドへの接続されたことを意味してます
*メソッドとはfunc ~の事ね
![](https://assets.st-note.com/img/1692449523924-ghzGS2CzRV.png)
ここで一度保存しよう。(Ctrl+Sキー)
MainシーンにHUDシーンを組込
main.tscnを右クリックしてOpen Sceneを選択する。
![](https://assets.st-note.com/img/1692433396769-Yq0VacGrLj.png)
Mainシーンを右クリックし、Instantiate Child Sceneを選択する。
![](https://assets.st-note.com/img/1692433498453-NAXq0bnE9m.png)
hud.tscnを選択し、開くをぽちー。
![](https://assets.st-note.com/img/1692433546469-wscCN2qDtX.png)
MainシーンにHUDシーンが組み込まれた。
![](https://assets.st-note.com/img/1692433584536-CeINSH97FT.png)
MainシーンでHUDシーンからのシグナルを受け取ろう。
Mainシーンの配下のHUDシーンを選択して、
![](https://assets.st-note.com/img/1692448570303-RC1qvRgMw1.png)
右側の「ノード」タブをクリックしてシグナル一覧を表示しよう。
![](https://assets.st-note.com/img/1692448727590-WHOhPHm72G.png)
hud.gdの中のstart_game()を右クリで接続を選択する。
![](https://assets.st-note.com/img/1692448792517-6ZZDGlNBGt.png)
Pickボタンを押して、
![](https://assets.st-note.com/img/1692448999328-HyKXxIzPpU.png)
new_game()メソッドを選択し、OKぽちー。
![](https://assets.st-note.com/img/1692449024684-yKzCTeMHIv.png)
受信側メソッドに
new_gameが記入されていることを確認して
接続ぽちー。
![](https://assets.st-note.com/img/1692449118176-2UATgujrlE.png)
main.gdファイルのnew_game()メソッドの横に
緑色の接続アイコンがあればOKっす。
![](https://assets.st-note.com/img/1692449561832-zRqPtwo5sS.png)
main.gdファイルの_ready()メソッドは
![](https://assets.st-note.com/img/1692449795970-fse08xrf1G.png)
Mainシーンのテスト用だったので削除しよう。
![](https://assets.st-note.com/img/1692449816823-JuNPKsTh9u.png)
new_game()メソッドに以下を追記しよう。
$HUD.update_score(score)
$HUD.show_message("Get Ready")
![](https://assets.st-note.com/img/1692450018686-WCoTHbyuhE.png)
game_over()メソッドに以下を追記しよう。
$HUD.show_game_over()
![](https://assets.st-note.com/img/1692450147827-eo2Dx4xcTm.png?width=1200)
_on_score_timer_timeout()メソッドに以下を追記しよう。
$HUD.update_score(score)
![](https://assets.st-note.com/img/1692450237345-5x9VCYQckX.png)
ここで一度保存しよう。(Ctrl+Sキー)
スタート時の敵さん掃除
mob.tscnを右クリックしてOpen Sceneを選択する。
![](https://assets.st-note.com/img/1692484373324-3zilclcvbY.png)
Mobを選択し、
![](https://assets.st-note.com/img/1692484623677-fIdL3DOiPW.png)
右側「ノード」タブの「グループ」をクリックする。
![](https://assets.st-note.com/img/1692484700397-qg7Tt7Mybt.png)
グループの管理に"mobs"って入力して、追加ぽちー。
![](https://assets.st-note.com/img/1692484748634-IRqJvPANzM.png)
Mobシーンたち(敵さんたち)がmobsグループで括られた。
![](https://assets.st-note.com/img/1692484765440-4seqz7l7X5.png)
Mainシーンで上記mobsグループに対してクリーン命令を出す。
(=スタート時の敵さん掃除)
main.gdをダブルクリック。
![](https://assets.st-note.com/img/1692484958915-3lOjQkJElI.png)
main.gdファイルのnew_game()メソッドに以下を追記する。
get_tree().call_group("mobs", "queue_free")
![](https://assets.st-note.com/img/1692485020072-cDIvlTD96i.png)
ここで一度保存しよう。(Ctrl+Sキー)
仕上げ
背景画像の設定
ここからフリー素材をダウンロードしよう。
*作者様に感謝!(素材を拡散するか、フォローしよう)
ドキュメントフォルダのGODOTプロジェクトのフォルダの中に
textureフォルダでも作成して、ダウンロードした背景画像を格納しよう。
![](https://assets.st-note.com/img/1692527057815-vFc8Cx94vG.png)
すぐにGODOTが取り込むので、ファイルシステムに現れる。
![](https://assets.st-note.com/img/1692527070580-d8VneXObkY.png)
Mainシーンを表示し、
![](https://assets.st-note.com/img/1692486616783-3QMF91gMo5.png)
子ノード「TextureRect」を追加しよう。
![](https://assets.st-note.com/img/1692486651566-kWkOaA9uiB.png)
![](https://assets.st-note.com/img/1692486671008-HSQPIqEa3O.png?width=1200)
TextureRectを選択し、
![](https://assets.st-note.com/img/1692486718904-zFnqV5ejtL.png)
右側インスペクターの
TextureRectのTextureの<空>をクリックして
![](https://assets.st-note.com/img/1692486851090-fBDjs9p9ow.png)
読み込みを選択しよう。
![](https://assets.st-note.com/img/1692526769903-q7nObQZCsK.png)
背景画像を選択し、開くぽちー。
![](https://assets.st-note.com/img/1692527097307-C4VuQ1FCOL.png?width=1200)
背景画像を最背面に持ってくるため、
Mainノードの直下にTextureRectを移動しよう。
(ドラッグアンドドロップね!)
![](https://assets.st-note.com/img/1692527637814-FLHCDppCvH.png)
![](https://assets.st-note.com/img/1692527571168-HTZjCDxnwc.png)
サイズを調整しよう。
右側インスペクターのExpand ModeをIgnore Sizeにして
![](https://assets.st-note.com/img/1692527705937-zeM5nFYkVl.png)
Mainノードのプレビューで背景画像を右下端を掴んで
サイズを合うように調整。
![](https://assets.st-note.com/img/1692527813255-qfU3ILz86n.png?width=1200)
![](https://assets.st-note.com/img/1692527825989-9VSzNuvFUk.png)
ここで一度保存しよう。(Ctrl+Sキー)
BGMと効果音の設定
BGMはここからありがたく
ダウンロードさせていただきました。
効果音はここからありがたく
ダウンロードさせていただきました。
*ここに効果音の製作者様を表示しておきます!
効果音 by「風人」様
ドキュメントフォルダのGODOTプロジェクトのフォルダの中に
soundフォルダでも作成して、
ダウンロードしたBGMと効果音を格納しよう。
![](https://assets.st-note.com/img/1692531878500-1cwi9yTbvj.png)
すぐにGODOTが取り込むので、ファイルシステムに現れる。
![](https://assets.st-note.com/img/1692531911092-zeGsvu3cXf.png)
Mainシーンを表示し、
![](https://assets.st-note.com/img/1692486616783-3QMF91gMo5.png)
Mainの下に2つ子ノードとしてAudioStreamPlayerを追加し、
![](https://assets.st-note.com/img/1692531659656-dWDVtZATjO.png)
![](https://assets.st-note.com/img/1692531688705-PVs8kFJVtS.png?width=1200)
![](https://assets.st-note.com/img/1692531707550-B2IKH1g8y6.png)
それぞれ以下の名前に修正する。
・Music
・DeathSound
![](https://assets.st-note.com/img/1692531743438-QO6sH6x7AB.png)
Musicを選択して
右側インスペクターのSteamの<空>をクリックし、
読み込みをクリック。
![](https://assets.st-note.com/img/1692532019113-bpOKFnI7Wb.png)
BGMファイルを選択して開くぽちー。
![](https://assets.st-note.com/img/1692532064265-M2AtYsgNjt.png?width=1200)
SteamにBGMファイルが設定されたことを確認。
![](https://assets.st-note.com/img/1692532352069-18QtLPTknf.png)
ファイルシステムのBGMファイルをダブルクリック。
![](https://assets.st-note.com/img/1692532426364-HIsSqTgAaS.png)
ループの有効にチェックを入れて、再インポートぽちー。
![](https://assets.st-note.com/img/1692532473680-zBNlHHAAbA.png)
DeathSoundを選択して
右側インスペクターのSteamの<空>をクリックし、
読み込みをクリック。
![](https://assets.st-note.com/img/1692532663529-uhAFrOZGpO.png)
効果音ファイルを選択して開くぽちー。
![](https://assets.st-note.com/img/1692532709233-1iV9hkMZQv.png?width=1200)
Steamに効果音ファイルが設定されたことを確認。
![](https://assets.st-note.com/img/1692532718775-6KaSK1J7fx.png)
main.gdファイルを開き
new_game()メソッドに以下を追記し、
$Music.play()
![](https://assets.st-note.com/img/1692532979945-D686f3K9aA.png)
game_over()メソッドに以下を追記する。
$Music.stop()
$DeathSound.play()
![](https://assets.st-note.com/img/1692533010487-J9ljegTRJN.png)
ここで一度保存しよう。(Ctrl+Sキー)
キーボードショートカット
Enterキーでゲームがスタートできるようにします。
メニューのプロジェクト>プロジェクト設定
![](https://assets.st-note.com/img/1692533214511-0H56o4BzeV.png)
"start_game"と入力し、追加ぽちー。
![](https://assets.st-note.com/img/1692533277444-rFFiwlz18m.png?width=1200)
+をクリックし、
![](https://assets.st-note.com/img/1692533335363-MBwDC9oLss.png?width=1200)
キーボードのキーのEnterを選択し、OKぽちー。
![](https://assets.st-note.com/img/1692533364506-jQIvYe2OTU.png)
閉じるぽちー。
![](https://assets.st-note.com/img/1692533403316-0c6dvnedvp.png?width=1200)
hud.tscnをダブルクリックで開き、シーンのStartButtonを選択する。
![](https://assets.st-note.com/img/1692533466326-TE6U0AEPnG.png)
右側インスペクターのShortcutの<空>をクリックし、
![](https://assets.st-note.com/img/1692533556565-GxgemVPxeq.png)
新規Shortcutを選択する。
![](https://assets.st-note.com/img/1692533633600-W8Qi3EIIOv.png)
<空>からShortcutに置き換わるので
そのShortcutをクリックし、
さらにArray[InputEvent](サイズ0)をクリックする。
![](https://assets.st-note.com/img/1692533798169-fiCUaT3DIe.png)
「要素を追加」をクリックしてから
<空>をクリックし、新規InputEventActionを選択する。
![](https://assets.st-note.com/img/1692533902408-jegjNRDm62.png)
さらにInputEventActionをクリックし、
Actionに"start_game"と入力する。
![](https://assets.st-note.com/img/1692534083740-SnuDHN8wcp.png)
ここで一度保存しよう。(Ctrl+Sキー)
以上で完成です!!!
では、遊んでみよう!
右上の再生アイコン▶で実行!
おぉ、雰囲気出てるね!
ここまで、およそ8時間くらいかな?
次回は3Dゲームのチュートリアルをやってみようと思います。
今回は以上です。
では、また!