ねこ巫女籠城ゲーム開発(壁乗り越え用のメッシュ定義)
敵キャラが建物や壁を乗り越えるあたりを実装していきます。
やりたいこと
移動途中に建物や壁、石垣があったときにそれが提供する高さに沿って移動させます。
壁なら壁に沿ったパルスのように移動軌跡になるようにしたいです。
今回のテストでの建物配置は木柵と多門櫓にします。
↓ 建物の配置と移動してほしい移動軌跡
やったこと
まず、建物と敵を配置して移動させたところ「敵のパラメータがないっす!」というエラーになりました。
↓ エラーになって多門櫓の外壁で移動を停止した様子
エラーの原因だった敵キャラのパラメータ不足を修正したところ、多門櫓を素通りするようになりました。どうやら「移動先に建物があれば攻撃する」という処理があり、そのときにパラメータ参照しようとしてエラーになっていたようです。
そういえば、敵がいつ攻撃するかとか、建物や壁が攻撃されるとどうなるかについて改めて決めます。
敵が攻撃するタイミング
敵の種類は近接攻撃の「金棒」と遠距離攻撃の「弓」「火縄銃」です。決めるべきこととしては、
近接攻撃の敵
- 建物を攻撃するのかどうか。
- 攻撃してきた少し離れたタレットに反撃するかどうか。遠距離攻撃の敵
- 建物を攻撃するのかどうか。
- 攻撃対象をどう選ぶか。
とかです。
案を書き出すと
近接攻撃の敵
- 移動経路上にある建物や壁は攻撃する。
- 耐久の減った建物や壁は少し早く乗り越えられる。
- 攻撃された場合、軍勢の数体には反撃させたいが、どうすればいいか未定。遠距離攻撃の敵
- 攻撃したタレットとの射線判定を行い、判定先が攻撃可能なら攻撃する。
- 耐久力の減った建物や壁は防弾比率が下がって配置されているタレットが壊れやすくなる。
- 弓と火縄銃に対する防弾比率は個別に設定し、板塀は火縄銃に弱いとかを表現する。
くらいでしょうか。
書き出してみると「耐久が減った建物や壁は乗り越えやすくなる」が今回の実装に関係してそうです。
メッシュの種類と実装について
ここでのメッシュとは「建物や壁、石垣が提供する高さ」です。壁があったときに、壁を乗り越えるような移動軌跡を提供する機能です。
このメッシュの種類として、
- 地面が提供するメッシュ
- 石垣が提供するメッシュ
- 石垣ブロックが提供するメッシュ
- 建物が提供するメッシュ
- 壁が提供するメッシュ
の5種類があります。しかも、建物はフィールどのタイルを専有するのに対し、壁はタイルの境界線にある仕様なので小難しいです。
このあたりの実装については、Dictionary<Vector3Int, MeshData> 型でメッシュデータを5種類それぞれで保持させて、5種類のメッシュの高さを順に評価する仕組みにしようと思います。「~という仕組みにしようと思います」と書きながら、小難しい実装なので割と心がつらいです。
心がつらいので次回にやります。着手を延期しているので、あまりよくはないです。
Unity のバージョンアップをした
今までは 2021.3 系でしたが、2022.3 系に更新しました。数十分かかっていくつかのエラーが出ましたが対処できました。よいです。
まとめと今後の予定
建物や壁、石垣を乗り越える移動まわりを実装しようとして、実装が小難しいのにたじろいだりしていました。
次回は、この続きに着手して少しでも実装を進めたいtです。あと、息抜きのためになんかこう適当な実装にも着手したいです。がんばります。