オブジェクト破壊対応

オブジェクト破壊は銀日記さんのブログでも対応していたらしいんですが、残念ながらコードも解説も残ってないので自己流で作成していきます。



そういえばエヴァのマップを見ながら、第3新東京市風?なマップとそれっぽい建物のキャラチップを作成しておきました。

今作のオブジェクト

オブジェクトはマップギミック=NERVビルと、一般建築物の二種類。
一般建築物はただそこに建っているだけで、マップギミックはその種類によってさまざまな効果を発揮。


マップギミックはエヴァに登場するものを採用予定。

仕様(仮)

これまで、マップEvID0番を空データ、1番以降を順番に敵ユニット、味方ユニットとしていましたが、追加でさらにマップギミック、一般建築物と続くことにします。


とりあえず最初は
1~18番をユニット
19~30番をマップギミック
31〜33番を一般建築物
として作成を進めました。




マップギミックについては後回しで、まずは一般建築物を作成

一般建築物のマップEvはグラフィックだけ設定して、移動時アニメなどのチェックはすべて外します。


それと可変DB[味方ユニットステータス]と同様に、このマップのマップギミックステータスを管理する可変DBを用意します。

ただし、可変DB[味方ユニットステータス]とは違って、データ番号がマップEvIDに対応してます。
こうしておくことで、戦闘開始時に可変DB[味方ユニットステータス]を戦闘一時DBにコピーするのと同様、スムーズにこの可変DB[マップギミック]をコピーして使用できます。
※空データとユニットに相当する-<使用禁止>-以外のデータをそのまま戦闘一時DBに上書きすればいい



ちょっと無理矢理な気もしますが、戦闘マップ毎にこれらを管理する可変DBを作成する予定です。


それと可変DB[自作:システム変数]にどのマップEvがユニット/マップギミック/一般建築物なのか、そしてマップギミックを管理している可変DBのタイプ番号を登録しておきます。



ユニット用のマップEvID最大が18、
マップギミック用のマップEvID最大が30、
一般建築物用のマップEvID最大が33

つまり
ユニット用のマップEvが18個、
マップギミック用のマップEvが12個、
一般建築物用のマップEvが3個

という事。


SRPGシステムのコモンEvの処理中はこの情報を使って、どのマップEvIDがどのオブジェクトなのかを把握しながら処理するようにしておきました。

こうしておけば、あとでここで決めたマップEvIDとユニット&オブジェクトの対応を変更したとしても、コードをいじらなくても正常に動く...ようになったはず。
まあバグがあったら適宜直していきます。
後で思ったんですが、ここ「Ev種別」みたいなステータスを作ってユニット/マップギミック/一般建築物を見分けられるようにした方がシンプルで良かったかも



なので今後、戦闘マップを追加作成する際は

  1. マップを作成
  2. 適当数のマップEvを作成
  3. マップギミックステータス管理用の可変DBを作成し、対応するデータ番号に耐久値などを登録
  4. 戦闘開始時の起動時処理前に可変DB[自作:システム変数]の[マップ]情報3個と管理DBタイプ番号を登録(書き換え)

で、戦闘ができるように作っておきました。
戦闘マップの量産はまた追々。


表示処理

マップEvに関しては以下のような仕様があるそうで。

主人公が別のマップへ移動すると、マップイベントは初期位置に戻ります。


主人公が同じマップ内で移動した場合は、マップイベントはそのままの状態になります。


との事なので、必要の無いマップEvはどんどん墓場(座標(0,0)の事)に移動します!
コモンEv[■起動時イベント]と、■射出位置起動時イベント内で、認識可能でなければ透明化&座標(0,0)へ移動


破壊時処理

攻撃によって破壊された時は
⒈ Evを透明にする
⒉ Evを座標(0,0)に移動する

⒊ 「認識可能?」を0にする


修復処理

破壊された一般建築物を復元=復興処理も作成。
マップ移動時にマップEvは初期配置に勝手に戻るので、復興処理は対応可変DBのデータ上の操作だけで済みます。

  1. 「耐久値」を最大にする
  2. 「認識可能?」を1にする

損壊率の計算

オブジェクト、そしてユニットの損壊率を計算して戦闘結果画面に反映させました。
(デザインも更新)