【ウディタ講座】接触範囲拡張の可能性

ウディタはお手軽で、しかも玄人にもうれしい機能が盛りだくさん。「使いこなせたらスゴいんだろうな」と思いつつ、手の出ないコマンドってありますよね。たとえばビット積とか三角関数とか、回数ループ。

そんななかで取っつきやすいウディタ便利機能が「接触範囲拡張」。いろいろとおもしろいことができるんです。

基本は移動イベント(場所移動)のお手軽化

そもそも接触範囲拡張とは? 念のためおさらいしましょう。

サンプルゲームのこの人が説明してくれておりますが、接触で起動するイベントの対応範囲を広げることができる機能です。ツクールMVにもないウディタの強み。

 

サンプルのこの方法をマネれば、単独イベントで広範囲をカバーしたマップ間移動(階段や出入り口)が実現できます。

範囲拡張がなければ、同じ内容のイベントを別々に並べることになり、何かの拍子で移動先を修正したときに、一か所だけ直し忘れたりでバグになってしまうものです。これを防げるだけでも大助かり。

この使い方がもっともオーソドックスですね。

 

まだまだいろんなことがデキそうだ

ツクールで近いことをやるにはプラグインだなんだで大変っぽいですが、ウディタではとっても手軽。

これを活用しないのはもったいない! まだまだ応用ができるはずです。

すべる床のラクラク設定

たとえば、氷などツルツルした床に乗ったら、行き止まりまで滑り続ける仕掛け。ダンジョンのギミックでよくありますよね。岩押しなどと並び、世界的にヒットした名作RPG『ポケットモンスター』シリーズにも頻出する、シンプルながら奥深いパズルです。

ふつうに作ると、対象の床すべてにイベントを敷き詰めることになりかねません。
でも、マップ全体をカバーする接触範囲(X、Yともに50など)のイベントをひとつ置き、接触起動から次のようなコモンイベントを呼び出せばOKです。

歩くたびに「すべる処理」のコモンイベントを呼び出し、「主人公がいま踏んでいる床のチップ」をチェック。これが任意のツルツル床(タグ番号やチップ番号)である限り、向いている方向で一歩前進。ツルツル床でなければ即イベント中断、としているのです。

ツルツル滑っている間は移動速度を1段階あげると、よりそれらしくなります。

 

一定範囲内に入ったら主人公に気づいておいかけてくる敵

追いかけっこ系、かくれんぼ(スニーキング)系でよくある動きですね。

 

変数+で「呼び出し元イベントの接触範囲」を拾うことができます。接触範囲のX、Yをおおきめの同じ数値(正方形の接触範囲)にすれば、段階式の接触イベントが作れます。

モンスターのマップイベントをつくり、「1ページめ=セルフ変数0番が0のとき:プレイヤーに気づいていない」、「2ページめ=セルフ変数0番が1のとき:プレイヤーに気づいて襲ってくる」と考えてみましょう。

1ページめでは、接触範囲がX、Yともに4ぐらいの接触起動で上のコモンを呼び出すようにしておくと、このイベント(モンスター)とプレイヤーの距離が2以下になると、近い側の分岐に入り、返り値=1となります。

イベントが2ページめに切り替わるので、主人公を追いかけてくる移動設定や内容にしておけばOKです(コモンからの返り値によりイベントのページが切り替わる)。

「敵に背中から近づいた場合は気づかれない」といったことをするなら、イベントの向き情報や座標も取得して、主人公との位置関係をチェックする分岐を増やしてください。

マップ切り替えの移動時に、敵キャラのフラグ変数を戻すのを忘れずに。これを忘れると次からは敵がいきなり主人公に向かってきます。

「調べる」いらずのフキダシポップアップ

上の処理の改変で、こんなことも簡単にできちゃいます。


イベントに遠いときは「なにもしない(フキダシの画像を消去)」、近くにいるときは「フキダシを瞬間表示」しています。
呼び出し元の接触範囲も、X、Yともに8ぐらい大きくちょうどよいです。

最近の気の利いた商業ゲームでもよくあるギミックですね。というか、ペルソナ5のガヤのマネです。

フキダシの表示/消去の部分をBGSの音量調整なんかにすれば、「海岸に近づいたり離れたりすると音量が変化する波の音」という仕掛けになるはずです。

 

 

ちなみに、接触範囲関係ではこんなネタもございます。

【ウディタ講座】「プレイヤー接触」のべんり化(起動条件拡張)