ウディタの「場所移動」の話

今回はウディタの場所移動コマンドの話です。

移動先のマップや位置には変数が使える

知ってる方には当たり前の話なのですが、移動先のマップや位置には変数が使えます(1600000など、変数呼び出し値を使用)。したがってUDBで移動先のマップと位置のセットを指定し、それを読み込んで実行するような場所移動用のコモンイベントを作ってしまえば、イベント側でいちいち場所移動のコマンドを打たなくてもよくなり便利になります(マップの切り替えが多いゲームでは特に有効)。

「同じマップ」に移動したとき、イベントは初期化されない

例えばあるイベントの位置を移動させたり、イベントを一時消去したりした場合、別のマップに移動してから元のマップに戻るとイベントの位置は元通りになりますし、一時消去したイベントも復活します。このように一旦別のマップに移動してから戻るとイベントが初期化されます(※ただし、セルフ変数は保存されるのでそのまま)。

しかし、どうやら「同じマップ」に移動したときはイベントの初期化が行われないようです。なので例えば「ステージをやり直すとき、イベントを初期化して同じマップに移動したい」という場合はその動作はストレートには実現できません。

今制作中のゲームではまさにこのような場面があって少し悩みました。そこで対症療法的なやり方なのですが、「空マップを経由して元のマップに移動する」という方法で解決しました。具体的には下記のようなコードです。

 
| |■場所移動:主人公 ▲マップID14[ダミーマップ] X:9 Y:7 [トランジションなし]
| |■場所移動:主人公 ▲マップIDXX<CSelf3[┗移動先マップ]> X:CSelf0[スタート地点X] Y:CSelf1[スタート地点Y] [トランジションなし]

なお、この場合はトランジションを使うと少し面倒になりそうだったので、前後にエフェクトコマンドの「画面色調変更」を入れて簡単なトランジションを疑似的に再現するといった工夫をしました。