フェーズ遷移の実装(巫女&築城&防衛アクション)
今回もゲームが完成しているつもりで機能追加していきます。完成していると思い込むのは私の心が安らぐためです。
やること
今回は建築フェーズと防衛フェーズが切り替わったときの処理を追加実装します。
あと、いくつかの仕様も検討しておきます。
敵の出現位置と建物の視野について
このゲームでは、ゲーム開始時にフィールドに敵の出現ポイントがまばらにランダムに配置されていて、そのうち拠点から近い順にいくつかが有効になって敵が出現する仕組みにします。
そして仕様というか考え中のことは
- 敵の総量はラウンドが進むにつれて増える。
- 敵の総量を有効になっている敵の出現ポイントの数で割って出現させる。
- 敵の出現ポイントの周囲には建物を建築できない。
- お地蔵さんだけ建築できて、お地蔵さんで敵の出現ポイントを無効にできる。
- お地蔵さんの建築コストや維持コストをどうするかは未定。
です。
フィールドの最小タイルは 256 x 256 なのですが、外周の3タイルにある敵の出現ポイントは無効にできないようにして敵が出現することを保証しようと思っています。
今のところ「労力を増やすためには町エリアが必要で、町エリアを確保するために敵の出現ポイントを無効にしていく必要がある」という仕様にするかは考え中です。
これは「城下町もほしいよね vs 籠城要素だけでいいじゃん」というあたりで悩んでいるためです。もう少し細かく書くと「城下町を必須にするか、城下町を作ってもよい程度の要素にするか」で迷っています。
なんというか町エリアのために領地を確保する必要があるかどうか、そのために敵の出現ポイントを遠くに変えていくと防衛の難しさはどう変わっていくのか、というあたりを即答できるまで理解できてないです。また後で考えます。
とりあえず敵の出現ポイントについては「あらかじめフィールドに割り振っておいて、お地蔵さんで無効にする」というアイディアはよさそうなので、これだけ決まったことにして開発を続けます。よいです。
地形の高さの編集と保存について
地形は Terrain つまりメッシュで表現しているのでブロック幅の頂点位置の高さだけ保存すればオッケーです。
↓ Terrain の頂点がブロックの頂点と一致している場合の表現
ただ今回は石垣の傾斜を表現するために1ブロック幅を8分割していて、ここだけ小難しいです。
↓ 石垣があるときは、石垣がある隣の頂点で高さが変わるようにする表現
あと、ゲーム上制限から「石垣がない場合の傾斜の最大角は 45 deg にする」ことにしているので、プレイヤーが地形の高さを編集する際にはそこを考慮します。
まとめるとセーブデータにおいては
- 地形のブロック単位の各頂点の高さを保存する。
- 石垣については、石垣の位置と高さを保存する。
くらいの実装でよさそうです。
仕様を確認できたのでよいです。またいつか実装します。
やったこと
UI の切り替え
建築フェーズと防衛フェーズとで UI が切り替わるようにしました。それぞれの GameObject に配置しておいて、フェーズ遷移で有効無効を切り替える方法で実装しました。
↓ 建築フェーズと防衛フェーズ
よいです。
操作する自キャラの配置
とりあえず操作キャラのクラスを作って拠点である神社の前に配置しました。
まだ神社の位置も自キャラの位置も決め打ちだけど、そのうち適切にします。
あと、この操作キャラにカメラが追従するとか、フィールドを 45 deg 回転させてクオータービューっぽくする予定でしたが忘れてました。また後で実装します。
とりあえず操作キャラが表示できるようになったので、よいです。
まとめと今後の予定
今回は地形と敵の出現ポイントの仕様を確認して、フェーズの処理のいくつかを実装しました。よいです。
次回は敵の出現ポイントをちゃんと実装するか仮実装するかして、防衛フェーズで敵が出現するようにしようと思います。がんばります。