歩くたびに足音SEがザッザッと鳴る、いわゆる足音コモン。
あちこちに講座や配布コモンがあることと思いますが、自分なりに作ってアレンジも加えてみましたので、その結果をまとめます。
さりげないし当たり前なレベルで浸透しておりますが、やはりゲームの雰囲気出しには超重要な処理ですね。
過去、こちらの記事でも軽く触れはしたのですが、発展編としてアレンジしつつのまとめなおしです。
ウディタで歩くたびに足音SEを鳴らす方法
足音コモンの基本的な考え方
理屈としては簡単です。
並列処理のコモンで主人公の座標を常に監視&記憶して、記憶と違う位置に動いていたら足音のSEを再生しましょう。
扉のイベントで場所移動した場合などは鳴らない方が自然なので、マップIDも監視して、こちらの場合は「違うマップに移っていた場合はSEなし」とします。
コモンにするとこんな感じ。
※半歩移動ありの設定なら、座標の取得は「精密座標」になります。
地形によって足音の種類を変える方法
足音の鳴ってほしくない地形もあるかもしれませんし、石畳と砂地では、やはり違った音のする方が自然です。
ユーザーDB(データベース)でこんな項目を作ってみましょう。
特殊設定でシステムDBのSEを読み込み、足音ユーザーDB0番が無音、1番が石畳用SE、2番が砂地用SEというように。
今度はタイルセット設定の「タグ番号」を使い、ユーザーDBと対応させます。
石畳のチップにはタグ番号=ユーザーDBの1番、砂地のチップにはタグ番号=ユーザーDBの2番……と。
そして上の手順のSE再生の行を次のようなコモンに置き換えます。
すると、主人公の居る座標(新たな移動先)のもっとも上のタイルのタグ番号を取得、そこからユーザーDBを参照して地形ごとに違った足音SEを鳴らすようになるのです。
ウディタで歩くたびに足跡エフェクトを付ける方法
足跡演出の基本的な考え方
上記の手順で設定したユーザーDBに、次のようなピクチャエフェクトの欄を足して、表示させたい画像ファイル名を打ち込みましょう。空欄なら「表示なし」です。
そしてSE再生コモンの下に、足跡エフェクト用のコモンを作って付け足しまして、主人公の居る(居た)座標に、指定に応じた画像(足音や波紋)を表示すれば完了です。
あとは、波紋がアニメーションするだとか、足跡(靴跡)が主人公の向きに応じた角度になるだとかのアレンジをそれぞれ行うことになると思います(表示座標の微調整なども)。
足跡エフェクトのピクチャの注意点
まず画像のID。「マップよりは上」で「主人公よりは下」に表示されてほしいので、足跡エフェクトに使える範囲は「-1~-99999」です。
上記のソースのままだと、足跡エフェクトがいつまで経っても消えないので、表示すると同時に一定のディレイ時間のあとに消えていくようにした方が良さそうです。
そして、下のような感じのコモンを使って、「足跡エフェクトに使っていい範囲のピクチャIDの空き番号を検索する」と、必要以上に他の処理でも使えるピクチャIDの範囲を圧迫しないで済むように思います。
これにより、主人公が歩いた跡に複数の足跡エフェクト(足跡)が残るようにもなります。
足跡エフェクト画像は、ここではごく簡単に赤いマルとしています。
足音コモンの各種アレンジ
複雑なマップで意図しない足音が鳴る場合への対処
上の手順で、「変数+」を使ってタグ番号を読みとるのに、「いちばん上のタイル」を指定していました。
この場合、マップを作りこんで主人公の上にかかる(通行設定★)チップを最上レイヤーとして設定すると、意図しない足音が鳴りそうな気がします。
つまり、こういうケースですね。
後ろを通れる透明な滝は★設定なので、レイヤー3です(デフォ素材を加工して透ける滝にしています)。
「いちばん上のタイル」の読み込みでは、滝のチップの方のタグ番号を読み込みにいってしまいますが、足音が鳴ってほしいのは、レイヤー1にある砂地のはず。
こういうときはどうなるでしょうか。
実験してみた感触だと、「上のレイヤーのタグ番号が0」で「下のレイヤーのタグ番号が0以外」なら、自動的に下のレイヤーの方を採用してくれるようです。
なにか理由があって、滝のような上層チップのタグ番号を0にできない場合は、「いちばん上のタイルのタグ番号を取得」の部分を別途コモンイベント化し、レイヤー3から1へチェックしていく内容にすると良さそうです。
その中で、たとえば「タグ番号99なら」とか「足音ユーザーDBで特定の設定があるなら」という条件で、下のレイヤーのチップのタグ番号を採用する分岐をかけるわけですね。
消え切らない足跡ピクチャへの対処
上の手順で、いちど表示した足跡エフェクトはディレイでゆっくり消えるようにしてありました。
雪道マップで雪に残った足跡が、次の屋内マップに進んでも消え残っている……なんてことがありえます。なので、マップの変更を監視している部分に処理を足します。
マップの変更を検出したら即座に足跡エフェクトの全消去をかけることで、不自然な足跡エフェクトの消え残りを防ぎます。
今回は足音コモンで完結するようこんな感じにしていますが、場所移動イベントの方をコモン化して、画面が暗転している間に全消去をかけてあげる方がよりスマートかもしれません。
足音SEが賑やかになりすぎないための措置
ダッシュ機能なんかがある場合だと特に顕著となりますが、移動距離が長い場合や移動速度が速い場合、足音が途切れずに鳴り続けてしまいます。
さすがに賑やかすぎると感じるなら、足音SEがいちど鳴ったら一定時間は移動があっても足音が鳴らないようにしてみましょう。
やり方はこんな感じ。
欲しい仕様に合わせて、細かく間隔の代入値やリセットタイミングを調整してみるとさらに良くなると思います。