人生

やっていきましょう

先日の課題について解決策を思い付いた。

自分と鳥のいるマップが異なる場合、必ずしも鳥を常にそのマップにとどめておく必要はなかった。予めすべてのマップに鳥のグラフィックを配置して伏せておき、主人公が鳥のいるマップに入った時だけ鳥を所定の位置に置けばよかったのだ。

要はマップ移動の際、予め取得していた鳥のマップIDと現在の主人公のいるマップIDが一致した場合、予め取得した鳥のX座標、Y座標を読み込んでイベントを瞬間移動させる。そうすることであたかもそこにずっといたかのような演出ができる。

問題はマップの数が多ければ多いほどこのイベントの管理が大変になるということだ。何かひとつバグがあったとき、チェックをするのも修正するのも労力がかかる。またその分見落としも多くなる。

そこで共有できるマップは共有し、できるだけマップの総数を減らすことを考えた。最終的に建物の1階と個室のみを共有し、2階、東棟3階、西棟3階、上空、の計5つのマップに抑えることに成功した。共有された1階と個室については、すりぬけ問題を次のように解決した。1階はそもそも鳥を入らせない。看守か何かを置き1階には入れないようにする。個室に入る際にはいずれの場合もすりぬけ設定を解除し、当たり判定のある壁は通過できないようにする。

一旦これで作ってみる。何かあればまたブログに書く。