風薙鳥 ゲーム制作日誌

戦闘開始処理と、隊列メンバーの扱い

RPGツクールVX Aceで、モンスター育成RPGを制作中です。

戦闘システムを徐々に作っていきます。

戦闘開始時の動作をいくつか実装しました。
まず、マップのスクロールを戦闘開始時の位置で固定する処理。
マップ全体を使うと広すぎるので、一画面分がいいでしょう。
スクロール固定中に主人公が移動した距離は、戦闘終了時にスクロールして補正します。
また、戦闘中は主人公がスクロール範囲外に移動できないようにしました。

隊列の仲間モンスターをそのまま戦闘に使う仕様を考えていましたが、隊列メンバーは主人公に重なることがあることに気づきました。
重なったままでは戦闘に支障があります。
位置を補正するにしても、狭い場所では位置を確保できる保障はありません。
試しに隊列メンバーは主人公に重ならないようにしてみたら、動かしにくくて不便でした。
さらに、その状態で3匹以上隊列すると、狭い場所で主人公が移動できなくなって詰みますw

そこで、隊列メンバーは戦闘開始時にランダムな位置にジャンプさせることにしました。
ただ、これにも問題があり、スクロール位置を固定するため、地形によっては移動できない場所に閉じ込められてしまう場合があります。
打開策として、主人公のいる場所から徒歩で移動できるマスを判定して、判定した中からランダムな場所を選ぶことにしました。
この処理は敵モンスターにも適用できるので、敵モンスターが閉じ込められることもなくなりました。
実装に苦労しましたが、この戦闘システムでは恐らく必須となる処理だと思います。