ツクールVXの戦闘関係の処理で悩んでいたのが解決したのでメモ。
その問題のために戦闘関係は全然手つかずだったので未だにこんなテスト画面でお恥ずかしい限り。
何に悩んでいたかというと、BGMの変更とそれに伴う色々なタイミングのズレ等です。
まずツクールの仕様的にはこんな流れになります。
- 戦闘開始SE(システムで設定したSE)
- 戦闘画面に移行
- 戦闘BGM(システムで設定したBGM)
- メッセージ(〇〇があらわれた)
- プレイヤーの行動選択
普通に使っていればこれで問題ないのですが、敵ごとに戦闘開始SEやBGMを変えようとすると問題が起こります。
ツクール2000なら戦闘前にマップイベントでシステムBGM・SEを変更できたのですが、なぜかVXはできない。(←なんでだよ!)そのためBGMをOFFにして戦闘内のイベントでBGMを鳴らすということになるのですが、これだとちょっとタイミングがずれるんです。
- 戦闘開始SE(マップイベントで鳴らす)
- 戦闘画面に移行
- メッセージ(〇〇があらわれた)
- 戦闘BGM(バトル内イベントで鳴らす 0ターン目)
- プレイヤーの行動選択
3のメッセージが出てからプレイヤーがキーを押すまで入力待ちが発生します。
0ターン目のイベントが実行されるのはその後になるため、謎の無音時間が挟まれます。些細な問題なのですが、直し方が分からず戦闘そのものを放置していました。
結論としては、システムBGM・SEをOFFにし、
スクリプトを弄ってメッセージと入力待ちを削除、
バトルイベントでBGMとメッセージを出すことで解決しました。
戦闘開始直後から0ターン目に入るため、メッセージとBGMの表示順を入れ替えたり、セリフなどを挟むことも可能。
メッセージは戦闘グループごとに手打ちするため、条件分岐を使えば「〇〇というキャラがいるときにだけ敵グループ名の表示を変える」などの応用もできる。
表現の幅が広がりますね。
まあもっと本格的にやりたい人はツクールなんか使わないしデフォルト戦闘も使わないが……(汗)