ロックミント 2023/06/05 08:00

UIの配置をどうするかと、Godotエンジンでのリスト表示のやり方

基本は毎週日曜日にその一週間にやった作業内容をまとめて記事にするつもりですが、今回は始めということで日曜日ではないですが投稿させていただきます。
さっそく今回からゲーム画面の構想やGodotでやった作業を記事にしますね。

Godotはゲームエンジンですので自由度は高いですし、だけど難易度は一番低いです。
だからもっと使ってくれるゲームクリエイターが増えて欲しいです。
なのでGodotの良さを知ってもらったり使い方の参考になることを伝えられるように頑張ります。

やれることが多くてワクワクするようなゲーム画面を作りたい

という訳でどんな画面にするかをクリスタでざっくりと描いてみました。
まずメインの拠点画面。

そして戦闘画面とメスモンスター管理画面。(キャラ絵はモンスターではない仮画像です)

嫁になったキャラを拠点画面に表示してみたら見栄えがいいと思ったので嫁システムを採用。
どんな仕組みで実装するかはまだ考えてませんが、たぶんそこまで難しくないはず。

画面の構想は現時点でのアイデアであり、今後新しく何かを思いついたら自由に加えたりするつもりなのであくまで目安です。

モンスターのデザインもざっくりとですが少しずつ考えてます。
とりあえずメスモンスターの種類は45種を想定して作ってます。(ダンジョンの数の関係でそれくらいは必要になりそう)

まずは仮画像でぱぱっとゲームを構築しつつ、それと並行して一日一枚ずつCGを描いていけば何とかなるでしょう。

可変データベースをどう作るか

簡単にゲームが作れるツールを除いて、エンジンなどでゲーム制作をしていて「どう作ればいいの?」と初心者がよく詰まると個人的に思うのが『アイテムの概念・インベントリ』と『セーブ・ロード』かもしれません。
アイテムを作るときツクールやウディタならデータベースがありますよね。
UEなら構造体でデータベースのようなものを作ったり、UnityだとScriptableObjectを使ったりする方法があるみたいです。
GodotではUnityに近い方法があるみたいですが、今回は自分なりに考えてシンプルな方法で実装できないか挑戦してみます。

グローバル変数(ゲーム全体で使える変数)を置ける場所にディクショナリを用意してそこに取得したアイテムのデータを書き込んでいき、そのディクショナリの内容を読み取ってUIに表示することでインベントリを表現するという方法でいこうと考えてます。
もっとスマートな方法があるかもしれませんが、初心者の僕が一番とっつきやすい方法でやろうと思います。

このゲームには武器の強化があります。
つまり所持しているアイテムの数値を後から変更していく必要があると。

Godotではディクショナリの要素として配列を使うことができます。
なので、

このような感じでディクショナリを作り、そこへ取得したアイテムを追加していく。
そして武器の強化をするときはこの中の数値を上げればいいと思うのです。
これならば入手する武器の数値がランダムで変わるようなハクスラ的な武器集めも実装できますよね。
あくまで初心者なりに考えたものなので慣れているプログラマからみたら頭の悪いやり方かもしれないですが、今回はこれで出来ないか試してみます。

まずはGodotでリスト式の動的なボタンを作ってみる

ボタンノードを手動でポチポチ配置すればいい話ですが、例えばダンジョンリストみたいにまだ解放されてない項目を隠したい場合もありますよね。
取得している項目だけをボタンとして表示したいと。
なので、取得済みダンジョンリストという配列を作って、その配列の中身をボタンリストに表示する方法をやってみました。

まずボタンだけのシーンを作って、そのボタンを押したときのスクリプトを書く。

ノードを組み立てて、ボタンリストを格納するコンテナを作る。

グローバル変数としてダンジョンリストの配列を作る。
あと現在押されたボタンのダンジョンIDを格納する変数も作る。

コンテナノードにスクリプトを付けてゴリゴリ書く。
まず配列数を取得し、その回数だけボタン生成する。
そしてループしながら生成したボタンノードのテキスト部分に配列にあるダンジョン名を入れていく。
それからループ回数と同じ数字をダンジョンIDに入れるという処理です。
さらにボタン機能は最初はオフにしておいたので、このループの中でオンする。
だいたいそんな感じです。
これでボタンを押すと対応したIDがグローバル変数に入ったうえでシーンが切り替わります。
そのIDを読み取って出現する敵などを変更するという訳です。

うまくボタン式リストが完成しました。
手動でポチポチボタンを配置すると、一つずつボタンを押したときの処理を書かないといけないので、ボタン数が多くなると大変ですか今回のやりかたならボタンが100個になろうが問題ないはずです。
アイテムインベントリやメスモンスターリストなどもこの方法でいけるかもしれませんね。

主人公の見た目について

これは今回アイキャッチとして使った画像ですが、主人公はこんな感じの見た目にしようと思ってます。

それでは、今回はこの辺りで。
読んでくださりありがとうございます。
また次回の記事もよろしくお願いします。

記事のタグから探す

月別アーカイブ

限定特典から探す

記事を検索