【ウディタ】戦闘開始時の画面エフェクトを変更する①

レビニアなりよ。今回は戦闘開始時のエフェクトを変更してみるわ。敵とエンカウントした時の画面効果(エフェクトやSE)を好きなように変えるのよ。

今回は先に完成をお見せするわね↓。


作成する画面エフェクトは、デフォルトに加えて「真っ白にフラッシュ」「メッセージを表示」「主人公にズーム」の3つよ。どこかで見たような演出があるけどまぁ気にしないで(あくまで「例」よ)。

基本システムを改造して戦闘開始演出を変える

そもそも基本システムのどの部分で戦闘開始エフェクトを処理しているのかというと、


毎度おなじみ「188:X◆戦闘処理」の39行目あたりよ。SE再生と画面フラッシュをしているだけと非常に簡素ね。

まずは下準備として、この元からある二行を、


0回ループでくくってしまいましょう。「実行させたくないけど一応残しておきたい処理」はこうしておくといいわ。まぁ別に消しちゃってもいいけどね。

あとは新たに追加する画面演出の作成だけど、ここに直接書くより別にコモンを作ってそれを呼び出す方法をとりましょう。その方が基本システムのコモンをあまり汚さずに済むし、何かと管理もしやすいわ。


というわけで戦闘開始エフェクトを入力する用のコモンを空きIDに作成してね。
→コモン作成:名前「〇戦闘開始エフェクト」、起動条件「呼び出しのみ」

そして、作成したコモンを先ほどの「188:X◆戦闘処理」から呼び出すのだけど、


呼び出す位置はここにして頂戴。14行目辺りの戦闘曲を再生する直前よ。
→■イベントの挿入[名]: [“〇戦闘開始エフェクト”] <コモンEv 282>

呼び出す位置が元の位置(0回ループでくくったところ)と違う理由は、「エフェクトを実行するのは戦闘BGMの再生より前にしたかったから」よ。デフォルトだと戦闘曲の再生後に実行されてたけど、音楽が流れるのはエフェクトが終わってからの方がいいわよね?


あとはこの「〇戦闘開始エフェクト」に好きな戦闘開始エフェクトを作成していけばいいわ。でも最後にもう1つ、


音楽は消しちゃった方がいいわ。先にBGM停止のイベンドコマンドを入力しておいてね。
→■サウンド:BGM 停止 / 処理時間:0フレーム

これで本当に準備完了よ。

戦闘開始演出①「デフォルト」

作成する戦闘開始エフェクトは3つと言ったけど、あれはウソよ。


一応元々のエフェクト(デフォルト)の作り方も説明しておくわね。まぁ、さっき0回ループでくくったイベントをコピペするだけよ。
→■イベントの挿入[名]: [“X[共]システムSE再生”] <コモンEv 49> / 53:戦闘開始
→■イベントの挿入[名]: [“X[共]全体エフェクト実行”] <コモンEv 67> / 10:白フラッシュ / 30

戦闘開始演出②「真っ白にフラッシュ」


さて新たに追加する戦闘開始エフェクトだけど、1つ目は「真っ白にフラッシュ」。「エフェクト」コマンドにある「画面の色調変更」を活用するのよ。SEやウェイトも適宜追加してね。
→■色調変更: R200 G200 B200 / 30フレーム
→■ウェイト:20 フレーム
→■サウンド:SE ファイル[SE/[Effect]SHUWAAAN2_panop.ogg] 音 100% 周 100% 再生 / 遅延:0フレーム
→■ウェイト:50 フレーム
→■色調変更: R100 G100 B100 / 0フレーム

※ウェイトやディレイの位置やフレーム数なんかはもう、何度も繰り返し確認して「いい感じ」を探っていくしかないわ。まぁ試行錯誤してみて頂戴。

戦闘開始演出③「メッセージを表示」


2つ目はエンカウント時に画面へメッセージを表示してみましょう。ピクチャコマンドを使うから、ピクチャ番号を格納するためのセルフ変数を用意するわね。


そして、用意したセルフ変数に使いたいピクチャ番号を格納。
→■変数操作: CSelf20[PN.] = 13000 + 0

※使うピクチャは1枚だけだから直接入力してもいいけど、基本理念として「ピクチャ番号はDBやセルフ変数で指定する」という考えをした方が私はいいと思うわ。利便性とかそういうアレ的にね。


で、メッセージ表示を使用した戦闘開始エフェクトがこちら。色調変更とピクチャ表示(消去)を組み合わせた感じね(物騒なメッセージの元ネタはこちら)。
→■サウンド:SE ファイル[SE/[Effect]ZAAAA_panop.ogg] 音 100% 周 100% 再生 / 遅延:0フレーム
→■色調変更:(フラッシュ) R100 G0 B0 / 30フレーム
→■色調変更: R0 G0 B0 / 30フレーム
→■ピクチャ表示:CSelf20[PN.] [中心]文字列[\f[30]\c[2]\E獲物] X:160 Y:120 / 30(0)フレーム / パターン 1 / 透 255 / 通常 / 角 0 / 拡 100% / カラー R[100] G[100] B[100]
→■ピクチャ消去:CSelf20[PN.] / 0(60)フレーム
→■ウェイト:60 フレーム
→■色調変更: R100 G100 B100 / 30フレーム


ピクチャコマンドの詳細はこちら。使用している特殊文字の意味は以下の通りよ。
\f[30]:フォントサイズの指定(30ポイント)
\c[2]:文字色の変更(システムDB12:文字色のデータID2番)
\E:文字にフチをつける

戦闘開始演出④「主人公にズーム」


最後は画面のズーム(ファイナルファンタジーの5あたりがこんなだったイメージ)。主人公の位置にズームさせるために画面座標を取得する必要があるから、そのためのセルフ変数を用意するわ。


とりあえず入力するイベントコマンドの全文はこちら(要点は後述するわ)。
→■変数操作+: CSelf30 = 主人公 の 画面X座標
→■変数操作+: CSelf31 = 主人公 の 画面Y座標
→■変数操作: CSelf31 -= 10 + 0
→■サウンド:SE ファイル[SE/[Effect]SHUWAAAN1_panop.ogg] 音 100% 周 100% 再生 / 遅延:0フレーム
→■色調変更:(フラッシュ) R200 G200 B200 / 30フレーム
→■マップエフェクト:[ズーム] 中心X CSelf30 / 中心Y CSelf31 / 250% (15)フレーム
→■ウェイト:15 フレーム
→■マップエフェクト:[ズーム] 中心X CSelf30 / 中心Y CSelf31 / 100% (15)フレーム
→■ウェイト:15 フレーム
→■マップエフェクト:[ズーム] 中心X CSelf30 / 中心Y CSelf31 / 500% (15)フレーム
→■色調変更: R0 G0 B0 / 15フレーム
→■トランジション準備
→■マップエフェクト:[ズーム] 中心X CSelf30 / 中心Y CSelf31 / 100% (0)フレーム
→■トランジション実行
→■色調変更: R100 G100 B100 / 30フレーム


主人公の画面座標は変数操作+で取得できるのよ。ただしY座標は主人公の足元が取得されちゃう関係で若干位置が低いから、変数操作で-10して少しだけ上にあげているわ。

※ちなみに「マップ上の実際の座標」と「画面上の座標」は別物よ。変数操作+コマンドでも区別されているから間違わないようにね。


画面をズームさせるには「エフェクト」コマンドを使用するのよ。ウェイトを交えつつズームインとズームアウトを繰り返して、さきにお見せしたあのカッチョいい画面演出を実行しているのね。ズームする座標には変数呼び出し値でセルフ変数を指定しているわ。


それと、ここで「トランジション準備(実行)」というコマンドを使っているけど、これは「この間だけ画面更新を停止している」という意味なの。要はズームインした画面を元に戻す処理を、画面更新を停止して裏でコッソリやっているわけ。

作成した画面演出を自由に選択する方法……は次回で

戦闘開始(エンカウント)時エフェクトの改造方法はこんな感じよ。これらを参考にお好みの演出を自分で作ってみてね。

ちなみに「戦闘開始エフェクトを複数作成してゲーム中に切り替える(ボス戦だけ演出を変える等)」ということもやってみようと思うのだけど、それは次回の投稿で解説するわ。