【ウディタ解説】移動先を任意に記憶できるワープコモンを作る【自作】

レビニアよ。今回解説するのは「移動したい場所を自由に記憶してワープすることができるコモン」の作成なのよ。

概念的には「オンラインゲーム(MMORPG)でワープポータルという名前で使われているあれ」と言えばわかりやすいかしら。

といってもファミコン時代にも「MOTHER」でパンくずというアイテムがあったり、少しマイナーなところで言えば「スクウェアのトム・ソーヤ」でもミッチとシルベなんてのもあったから、オンラインゲームに限らず活用していけると思うわ。

「ワープ先指定コモン」を作成する

コモンを作成する前に、まずワープ地点の記憶やフラグ管理に使うための通常(予備)変数を作成するのよ。


今回は予備変数を使うわ。以下のように作成して頂戴。ワープ地点の登録とワープ実行ができるかどうかのフラグと、実際にワープさせる地点のマップID、座標X、座標Yを記録させるのよ。
→予備変数8:ワープ先登録可?
→予備変数9:ワープ実行可?
→予備変数10:ワープ先MAPID
→予備変数11:ワープ先座標X
→予備変数12:ワープ先座標Y

※ワープの登録と実行にフラグを設けたのはバグ防止のためよ。いつでもどこでもワープ地点を登録できたりワープが実行できたら、高確率でゲーム進行が崩壊するような事態が起こるわ。だから登録も実行もさせたくない場面ではフラグ操作で制限させるのね。


それじゃコモンを作成しましょう。まずはワープ地点を登録(記憶)するためのコモンから。入力設定やセルフ変数の設定は不要よ。
→コモンイベント作成:名前「〇ワープ先指定:登録」、起動条件「呼び出しのみ」


最初に条件分岐を作成。さっき作った「V1-8ワープ先登録可?」を条件に使って、ワープ先の記憶を行うか処理中断させるかを分岐させるのよ。0ならワープ地点を記憶してOK、1ならNGにするわ。
→■条件分岐(変数): 【1】 V1-8[ワープ先登録可?] が 1 以上 【2】 V1-8[ワープ先登録可?] が 0 と同じ


「V1-8ワープ先登録可?」の値が1の場合はワープ先登録不可よ。メッセージを表示してイベント処理中断させてね。
→◇分岐: 【1】 [ V1-8[ワープ先登録可?] が 1 以上 ]の場合↓
→■文章:ここではワープポイントを登録できない。
→■イベント処理中断


「V1-8ワープ先登録可?」の値が0の場合はワープ先を記憶してOK。メッセージと適当な効果音を付けて、用意した予備変数にワープ地点の情報を記憶させるわ。変数操作+を使うのよ。
→◇分岐: 【2】 [ V1-8[ワープ先登録可?] が 0 と同じ ]の場合↓
→■サウンド:SE ファイル[SE/[System]Get1_default.ogg] 音 100% 周 100% 再生 / 遅延:0フレーム
→■文章:現在位置をワープポイントに登録した。
→■変数操作+: V1-10[ワープ先MAPID] = 現在のマップID
→■変数操作+: V1-11[ワープ先座標X] = 主人公 の X座標(標準)
→■変数操作+: V1-12[ワープ先座標Y] = 主人公 の Y座標(標準)
→◇分岐終了◇

これでワープ地点記憶用のコモンは完成よ。


次は記憶した位置へワープさせるコモンを作成するわ。入力設定とセルフ変数の設定はこちらも不要よ。
→コモンイベント作成:名前「〇ワープ先指定:実行」、起動条件「呼び出しのみ」


最初に「まだ一度もワープ地点を記憶していない場合は処理中断」させる分岐を作成するわ。これは用意した予備変数「V1-10ワープ先MAPID」の値が0以下であることを条件にすればいいでしょう。
→■条件分岐(変数): 【1】 V1-10[ワープ先MAPID] が 0 以下
→-◇分岐: 【1】 [ V1-10[ワープ先MAPID] が 0 以下 ]の場合↓
→|■文章:ワープポイントが登録されていない。
→|■イベント処理中断
→◇分岐終了◇

※大抵の人はマップ番号0はタイトル画面に使っているからこれでいいと思うけど、もし0番を通常のゲーム用マップに使用している場合は、分岐条件を工夫して対応して頂戴。


次も条件分岐よ。こちらは予備変数「V1-9ワープ実行可?」を条件にするわ。ワープを実行していい場所かどうかを判断するのね。
→ ■条件分岐(変数): 【1】 V1-9[ワープ実行可?] が 1 以上 【2】 V1-9[ワープ実行可?] が 0 と同じ


「V1-9ワープ実行可?」が1の場合はワープ実行不可よ。メッセージを表示して処理中断させてね。
→◇分岐: 【1】 [ V1-9[ワープ実行可?] が 1 以上 ]の場合↓
→■文章:ここではワープできない。
→■イベント処理中断


「V1-9ワープ実行可?」が0ならワープ実行OK。予備変数に記憶させている地点へ場所移動させるわ。ワープの演出もお好みで作ってあげてね。
→◇分岐: 【2】 [ V1-9[ワープ実行可?] が 0 と同じ ]の場合↓
→■動作指定:主人公 / ウェイト 15フレーム / 上向 / 右に1つ回転 / ウェイト 2フレーム / 右に1つ回転 / ウェイト 2フレーム / 右に1つ回転 / ウェイト 2フレーム / 右に1つ回転 / ウェイト 2フレーム / 右に1つ回・..
→■サウンド:SE ファイル[SE/[Effect]Healing3_default.ogg] 音 100% 周 100% 再生 / 遅延:0フレーム
→■ウェイト:45 フレーム
→■場所移動:主人公 ▲マップIDXX<V1-10[ワープ先MAPID]> X:V1-11[ワープ先座標X] Y:V1-12[ワープ先座標Y] [トランジション + 暗転有り]
→◇分岐終了◇


一応ワープの演出についても解説しておくわね。イベントコマンド「イベント制御」の中に「■キャラ動作指定」というのがあるから、そこをクリックすれば↑の画面が出てくるわ。後は右のコマンドを使って主人公の動作を入力してあげればいいのよ。


場所移動コマンドの詳細はこちら。マップID、座標X、座標Yに変数呼び出し値を使って、ワープさせる場所を記憶させてある予備変数を指定するのよ。

ワープ実行用コモンはこれでOK。コモンイベントの作成はこれで完了よ。

「ワープ先指定コモン」を試してみる

作成したコモンだけど、今回はアイテムからコモンイベントを呼び出して試してみるわね。技能から呼び出す場合でも設定の仕方はほぼ一緒だから、どちらでもいいわよ。


こちらはワープ先を記憶するためのアイテム。イベント起動で500000+コモンイベントのIDを指定すれば、アイテム使用時にコモンを呼び出すことができるわ。
→ユーザーDB2:アイテムの空きIDに「ワープ登録」を新規作成する
→使用可能な場面:[0]マップ時だけ
→効果のタイプ:[3]イベント起動
→イベント番号指定:500000+コモンイベントのID
→使用回数制限:無制限に使用可能


同様に記憶したワープ先に移動させるアイテムも作成してね。
→ユーザーDB2:アイテムの空きIDに「ワープ実行」を新規作成する
→使用可能な場面:[0]マップ時だけ
→効果のタイプ:[3]イベント起動
→イベント番号指定:500000+コモンイベントのID
→使用回数制限:無制限に使用可能


ワープ先の記憶と実行の制限については、以前解説した「近づくと起動して離れると停止するコモン」を使ってテストするわ。


このマップイベントの接触範囲内にいる時だけ、予備変数「V1-8ワープ先登録可?」と「「V1-9ワープ実行可?」の値が1になるから、ワープ先の記憶も実行もできなくなるはずよ。

それじゃテストプレイを起動して試してみましょう。


以下の通りに呼び出されたコモンが動作していれば成功よ。
→アイテム「ワープ登録」を使用した場所が記憶
→アイテム「ワープ実行」を使用するとその場所へ移動
→まだ1度もワープ先を記憶じていない場合は、ワープ実行しても処理中断
→ワープ先の記憶と実行が制限されている場合も処理中断

「移動したい場所を自由に記憶してワープすることができるコモン」の作成解説は以上よ。うまく活用してね。