Godotでエッチなシミュレーションゲームを作ろう進捗1~アイテムインベントリを作る~
毎週日曜日に記事を更新するつもりだったのですが都合により毎週土曜日の更新に前倒しします。
今週はキャラの立ち絵を描いたりGodotでの制作を少しずつ進めてました。
絵は凝りだすと時間がいくらあっても足りないので、今回はフリーゲームとして作る予定なのでそこまで絵にはこだわらずにさらっと一枚三時間くらいで描くことにしました。
その代わりゲーム構築部分を趣味としてしっかり時間を掛けて楽しみたいと思います。
今週やった作業内容
とりあえずモンスター娘の立ち絵をいくつか描きました。
最初は仮絵だけ描いてゲームを構築し、後でちゃんと描き直そうと思ったのですがそれだと二度手間なので最初から実際に素材として使うCGを描くことにしました。
(45体までまだまだ遠い)
インベントリを作り始める
さて、インベントリの制作です。
前回の記事でディクショナリ内に配列を入れて所持アイテムデータを管理すると書いたのですが、いざ作ろうとしてみるとディクショナリには同じキーを複数置けないことが分かりました。
つまり同じアイテムを複数所持する場合、一つにまとめて所持数を増やす形式でないといけません。
ですが僕は例えば同じ武器でも若干パラメータの違うものを入手できるハクスラみたいな楽しさが欲しかったので、同じアイテムでも別々に持てるようにしたいんですよね。
どうすれば一つずつ性能の違う武器を管理できるか現在考え中です。
とりあえず、
このような感じで所持しているアイテムは配列に記して、ディクショナリには各アイテムの詳細データを関連付ることにしました。
配列からアイテム名を読み込み、そのアイテム名を元にディクショナリからデータを読み取ってインベントリのUIに表示する方法でインベントリの表示はいけそうです。
ここからは前回の記事で書いたリストの作り方の応用です。
パネルノードにスクロールコンテナノードをくっつけて、その下にタブコンテナノードをくっつけて、さらにその下にアイテムカテゴリ分のグリッドコンテナを複数配置。
それからアイテムアイコン用の四角いボタンを別シーンとして作り、そのボタンをグリッドコンテナのスクリプトから子ノードとして配列の個数分を配置します。
そして配列とディクショナリの情報を読み取ってボタンのアイコンを変更。
ついでにアイテムの名前と説明文用のテキストラベルノードを設置し、カーソルがアイコンの上にフォーカスしているとそのアイテムの名前や説明が表示されるようにしました。
ざっくりとですがインベントリっぽいものが出来上がりました。
タブでカテゴリを切り替えられるし、アイテムが100個とかになってもマウスホイールでスクロールできます。
そして各種情報を表示し、フードアイテムは使用できるようにして、武器アイテムはアイコンをクリックすると装備できるようにしました。
装備中のアイコンをクリックすると装備を外すこともできます。
色んな制作ツールでインベントリを作ろうとして挫折しかしてない僕ですが、Godotエンジンでは高い自由度を持ちつつも比較的簡単なコードで作れるのでやっぱり楽しいです。
「このゲームにこんな要素があったら面白そう」というアイデアがもしあったら教えてください。
僕の技術力で全て実現できるかはわかりませんが参考にさせていただきます。
では今週はこの辺りで。
読んでいただきありがとうございます。
次回もよろしくお願いします。