クラフトゲーム開発(焚き火での調理)
建物(焚き火)をカーソルの先に配置する処理の続きから開発します。
建物をカーソルがある位置に建築する
カーソル位置を取得して、その座標に配置されるようにします。
で、実装して動作確認して「なんでプレビュー表示の焚き火がなくなるんだ?」と思ったのですが、それはプレビュー表示した焚き火がアイテムとして扱われてて、自キャラに重なったときにアイテムが拾われてインベントリに格納されているからでした。なるほど。
何が起きているかわかったので、動作するように修正しました。
↓焚き火を建築した後の様子
動かなかった処理が動作するようになったので、大変よいです。
建物を右クリックで使う
次に、建築した「焚き火」で簡単な調理を行えるようにしていきます。なので、この焚き火が右クリックされたら、クラフトが行える作業台として処理します。
クラフト用のレシピで使うアイテムとして「生肉」と「焼いた肉」を用意しました。
↓追加した「生肉」と「焼いた肉」の画像
何なのか見てわかりませんが、画像を追加したのはよいです。
そして、フィールド上にある建物を右クリックしたときに行うべき処理を書き出してみると
- 何もしない(ただの壁とかの場合)
- その建物に対応したクラフトを開始する(クラフト用の建物の場合)
- その建物に対応したインベントリを開く(チェストの場合)
となります。
とりあえず、この3つの場合分けを行うための定義を YAML ファイルに追加します。
↓ Type: Building をなくして、Structure, CraftTable, Chest を Type に追加したもの
次は、カーソルがどのタイル上にあるかと、そのタイル上にどの建物があるかを管理するクラスを追加して、そのクラスからの情報を元に右クリックの処理を行うあたりですが、気が重いので次回にやります。
多分、TileRenderer と Dictionary<Vector2Int, Item> を主に扱う建物管理クラスを作ればよいはずです。
まとめと今後の予定
焚き火を適切に建築できるようになったし、次に何を実装すべきかまで考えたので大変よいです。
次回は、クラフト系建物の右クリックでクラフト用パネルを開いてクラフトするあたりに着手したり、「かまど」みたいな1タイルでなくて複数タイルで構成したい場合にどう処理するか検討します。(全ての建物を1タイルで表現する手もあります)
暑くて絶好調ではないですが、継続を目標にやっていきます。がんばります。