サイドビュー戦闘

 簡易サイドビュー戦闘のスクリプトです。

機能
 戦闘をサイドビューにできる他に、アニメーションの移動や回転、攻撃側と対象側のアクションを指定できます。また、アクション中にコモンイベントを発生させたりアニメーションのタイミングを自在に変更することが可能です。更にパーティアタックも追加しました。

素材説明
 設定したバトラーグラフィックを使います。画像の幅を設定したコマ数で割ったものを長さとした正方形を一コマとして、設定したフレーム数がたったら右のコマを描画し、右にコマがなければ最初に戻ります。 ゆえにグラフィックの大きさにも、コマの数にも限界はありません。ただし、エネミーはアニメーションを許可しなければ、通常と同じように描画されます。

仕様
 パーティアタックが可能になったため、アローは上下でそのサイドのバトラーを選択し、左右でサイドを変更する仕様になりました。……って誰がこの機能をうれしがるの?
バトラーのアクションは、4つのメソッドを組み合わせて作ります。

アニメコードの作り方
 定義anime_codeの中で指定した中に下のベースを入れます。
 anime_code = []
 この中に配列でアニメコードをつめていくだけです。使いやすいように多くの定数を用意していますが、初期設定ではこのようになっています。

行動

待機

移動

攻撃

魔法

道具

ピンチ

ダメージ

防御

戦闘不能

 実際には(値+1)段目をループさせて使っています。また、アニメコードには文字を入れることによって特殊な行動を起こさせる事も可能です。
animeを配列に入れると、行動側のアニメーションをその時点から発動させます。入れなかった場合でも最初に入るのでご安心を。
common(id)を配列に入れると、その時点で id番のコモンイベントを起こします。これをうまく使えるとかなり派手な演出も可能になるかもしれません。
freezeを配列に入れると、その時点からループしなくなり、アニメコードだけで表示させることになります。もう一回入れると元に戻ります。一応、フリーズさせっぱなしでも次のアクションには影響しないのでご安心を。
helpを配列に入れると、ヘルプの表示非表示が変わります。最初は非表示ですが、入れないと自動的に最初に入るので実質最初から表示されます。
opacity(time),(target)を配列に入れると、timeフレームでバトラーの透明度をtargetに変更します。一応戻していない場合は自動的に戻りますが、格好悪いのでなるべくムーブコード内で戻しましょう。
angle(time),(target)を配列に入れると、timeフレームでバトラーの回転度をtargetに変更します。回転描画は重いのでなるべく使わないようにしましょう。

アニメタイムの作り方
 定義anime_timeの中で指定した中に下のベースを入れます。
 anime_time = []
 アニメコードと1対1で対応し、そのアニメコードを何フレーム表示するかを設定します。これも配列につめるだけです。
 ただし、startだけはアニメコードと対応していません。その代わり、これを入れた所から対象側のアニメーションが始まります。

ムーブコードの作り方
 定義move_codeの中で指定した中に下のベースを入れます。
 move_code = []
 こちらはアニメコードとは別に使われていて、どこに移動するかを配列につめたものです。移動地点は自由に(画面外も可)指定出来る他、便利な変数も使えます。
 target.target_x ターゲットのX座標です。
 target.screen_y ターゲットのY座標です。
 @screen_x  バトラーのX座標です。
 @screen_y  バトラーのY座標です。
 @save_x  バトラーの最初のX座標です。
 @save_y  バトラーの最初のY座標です。
 また、ある程度ならば曲線にも対応していますが、説明が難しいのでここでは省きます。

ムーブタイムの作り方
 定義move_timeの中で指定した中に下のベースを入れます。
 move_time = []
 ムーブコードとは1対1で対応していて、その座標に何フレームで行くかを設定します。これも配列につめるだけです。

逃走アクションの作り方
 定義escape_setでバトラーごとに上の4つの要素を入れるだけです。
 いじらなくても、敵に背を向けて走ります。

勝利アクションの作り方
 定義winning_setでアクターごとに上の4つの要素を入れるだけです。
 自分で作らないと絶対にアクションを取らないのは、手抜きです。

ソースを読む