無料のゲーム開発ツール「ウディタ(WOLF RPGエディター)」の基本的な使い方を、初心者さん向けに紹介するこの企画。
前回「やさしいウディタ講座13:ループの「中断」と「開始へ戻る」の使い方」では、ループと併用してイベントを自在に操作する、「ループ中断」と「ループ開始へ戻る」の使用例を解説しました。
今回は前々回講座12の応用編。ループと並列実行を組み合わせたイベント作成についてです。この組み合わせには優れたメリットがあるんですよ。
現在公開中の講座をまとめたページ。「ウディタのことがよくわからない」「簡単な機能から覚えたい」などの初心者さんは、初期の講座から読むのがおすすめです。
公式サイトにはウディタの使い方を詳しく解説している、マニュアルやガイドが公開されています。ウディタを学ぶ際の必須となる教科書です。ぜひ参考にしましょう。
目次
イベントがループ中でも操作を可能にする「並列実行」
ループで囲まれているコマンドは、繰り返し実行します。
しかし、ループの実行中はそのイベント自体が自動化されます。その間、プレイヤー側で自由な操作ができない場合もあるんです。
「回数付きループ」や「ループ中断」などのコマンドで無限ループから離脱してしまえば、自由な操作を再開できるんですが…。
無限ループ中に操作したいことだってありますよね?
そんなときに使えるのが「並列実行」。イベント画面で指定できる、起動条件の1つです。
今回はこの「並列実行」を活用した、ループのイベントを作ってみますよ!プレイヤーが好きなタイミングで無限ループを止めるという内容です。
今回の講座をはじめる前の準備
「魔法使い」に話しかけると、「花の画像」が自動でコロコロ変わり続ける。そんな内容のイベントを前々回の「やさしいウディタ講座12:ループを使ってイベント内容を繰り返す」で作りました。
今回はこのときの、「花」と「魔法使い」のループイベントを使いまわして解説します。
遠回りになりますが、先に「やさしいウディタ講座12」を見てササッと2つのマップイベントを作っておきましょう。やさしいウディタ講座12を既に読んでいて、作成済みの人はそれを使えば大丈夫です!
ちなみにコマンド欄に入力したループの部分ですが、「ループ(繰り返し)」コマンドにしてください。「回数付きループ」は今回使いません。
「別講座を読むの面倒くせ~」という人は、以下の画像を見てイベントを作りましょう。見てもよくわからんという人の場合、面倒でも「やさしいウディタ講座12」を読みながらの作成をおすすめします。
マップイベント「花」【ページ1】
マップイベント「花」【ページ2】
マップイベント「魔法使い」
マップイベント「魔法使い」のコマンド欄(Ev6のセルフ変数0とは、マップイベント「花」のセルフ変数0のことです)
並列実行のループイベントで自由に操作!
ループイベントが優先される原因とデメリット
「花」と「魔法使い」のマップイベントを用意できたら、試しにテストプレイしてみてください。
魔法使いに話しかけると、花の画像が自動で白い花→黄色い花へとぐるぐる切り替わりますよね?
このときなんですが、画像が切り替わっている最中、主人公キャラを操作できなくなっていると思います。
理由は、以下の2つが原因です。
- マップイベント「魔法使い」のコマンド欄に、花の画像を変えるループがある。
- 「魔法使い」の起動条件が「決定キーで実行」。
魔法使いに決定キー(Enter)で話しかける。
↓
マップイベント「魔法使い」のコマンド欄を実行。
↓
ループを実行した途端、魔法使いのイベントが無限ループ状態になる【ここがポイント】
↓
ループ中は魔法使いのイベントが終わらないので、主人公キャラを動かせない。
さて、この中で注目したいのが【ここがポイント】の無限ループ。無限ループ状態になると、そのイベントは終わりません。よって、他のイベントの実行がストップします。
実験として、近くに「移動ルート」を「ランダム」にした、人物のマップイベントを作ってみます。
通常であれば一定間隔で周囲をフラフラと移動するはずですが、魔法使いのループが発生した途端、フラフラと動かなくなりました。その場で足踏み状態を続けます。
プレイヤーが操作する主人公キャラにも、この影響が出ます。移動できないし、決定キー(Enter)もメニュー開閉キー(X)も反応なし。
この困った状況を打破するために、「並列実行」を使います。
起動条件を「並列実行」にしてみた結果
マップイベント「魔法使い」の起動条件を、「決定キーで実行」から「並列実行」に変えてください。
セーブしたらテストプレイ。
魔法使いに決定キー(Enter)で話しかけていないのに、いきなり画面に魔法使いの文章コマンドが出現。花の画像がぐるぐる切り替わりはじめます。
その状態でも、主人公キャラを操作できるはず。
なぜこうなったのか?ですが、「並列実行」の影響です。
並列実行は、他のイベントが実行状態であっても、イベントを起動して実行し続ける起動条件。
そのためゲーム開始と同時に、魔法使いのイベントが即座に発生。勝手に文章コマンドが表示されて、花の画像がぐるぐる変わったというわけ。
「決定キーで実行」と「並列実行」の違いはココです。
魔法使いと会話できるようマップイベントを追加&修正
魔法使いと会話できない…
並列実行のおかげで、花の画像がループで切り替わっている間でも、マップを自由に歩き回れるようになりました。
しかし、ここで不満が。
マップイベント「魔法使い」に向かって、決定キー(Enter)で話しかけてみてください。
…全く反応してくれません。
これは、マップイベント「魔法使い」の起動条件が「決定キーで実行」ではなくなってしまったからです。並列実行中&ループで花の画像をぐるぐる切り替えているだけのイベントなので、話しかけても何も起こりません。
ならばどうするか?
魔法使いのマップイベントではなく、「別のマップイベントに、花の画像を切り替えるコマンドを入力する」ってのはどうでしょう?イベントコマンドを切り離せば、魔法使いと会話できそうです。
花の画像切替専用のマップイベント「花の切替」を作る
マップの適当なところに、マップイベントを設置します。
自分にとって管理しやすい場所で構いません。主人公キャラが直接触れて何か起こるイベントではないので、邪魔にならない場所がおすすめ。
- わかりやすいマップイベント名をつけましょう。今回は「花の切替」にしてみました。
- グラフィックは使いません。
- 移動ルートを「動かない」に。
- 起動条件は「並列実行」で。
コマンド欄には、マップイベント「魔法使い」のイベントコマンドをそのままコピーして貼り付けてください。ただし、魔法使いのセリフ用に入力した文章コマンドは不要なので削除しておきます(コマンド選択→Deleteキー、もしくは右クリック→削除)。
ここまでやったらセーブ。マップイベント「花の切替」の内容を保存します。
魔法使い側で「花の切替」をコントロールする
次に、マップイベント「魔法使い」のコマンドを編集します。
上で新しく作ったマップイベント「花の切替」にコマンドを移したので、魔法使い側の同じコマンドは不要です。全部消しちゃってください。
起動条件を「決定キーで実行」に戻しておきます。
このマップイベント「魔法使い」でやりたいことは、以下の2つ。
- 話しかけたら、花の画像の切替をストップ。
- 次に話しかけたら、花の画像の切替を再開。
「条件分岐」と「変数操作」を使えばできそう。
そこでさっそく条件分岐コマンドを入力するわけですが、どんな条件にしたら良いのでしょう?
うーんと、別のマップイベント「花の切替」で実行中の、花の画像が切り替わっている状態(ON)と、切り替わっていない状態(OFF)を知る必要がありそうですね。
その役割にぴったりなのが変数!
変数に状態(ONもしくはOFF)を記憶させればいいわけです。
判断に使う変数として、システムデータベースの通常変数もしくは予備変数が適しているかと思います。
通常変数と予備変数についてはどちらでも良いです。好みで選んでください。今回は通常変数に「花の切替ON/OFF」という名前の変数を作ってみました。
※システムデータベースに変数を作る方法は「やさしいウディタ講座11:条件分岐&変数で複数イベントを変える – システムデータベースで通常変数を作る」を参考にどうぞ。
- 通常変数「花の切替ON/OFF」が「0」なら花の画像切替【ON】
- 通常変数「花の切替ON/OFF」が「1」なら花の画像切替【OFF】
0がON、1がOFF。そんなルールにしてみましょうか。
ルールに従って、マップイベント「魔法使い」のコマンド欄に以下のような条件分岐を入力します。
通常変数「花の切替ON/OFF」に対して、「0と同じ」「1と同じ」の条件分岐を作りました。
※条件分岐コマンドの入力方法は、「やさしいウディタ講座10:条件分岐の基本!イベント内容を振り分ける – 条件分岐コマンドを入力する」を参考にどうぞ。
続いて、通常変数「花の切替ON/OFF」の中身を変える「変数操作」の作業です。
条件が「0と同じ」ときは、花の画像が切り替わっている状態。そのときに変数操作で「花の切替ON/OFF」に1を代入し、切替を止めます。ただいきなり止めるのも何なので、魔法使いにそれっぽいセリフを言わせてみましょう。
こんな感じで。
続いて、通常変数「花の切替ON/OFF」の中身を変更。1を代入します。
条件が「1と同じ」ときは先程と逆。花の画像切り替えを再開させますので、0を代入します。
※変数操作のやり方は、「やさしいウディタ講座5:変数を使ってイベントを変化させよう」を参考にどうぞ。
上のようになっていれば大丈夫。終わったらイベントをセーブ、保存しておきます。
マップイベント「花の切替」を修正しよう
マップイベント「魔法使い」で、変数「花の切替ON/OFF」を操作しました。これに合わせて、花の画像を切り替えるコマンドを入力した、マップイベント「花の切替」も修正します。
やり方は2種類です。どちらでも同じ結果になります。
方法その1:起動条件で実行する・しないを切り替える
起動条件に変数を使います。
- 通常変数「花の切替ON/OFF」が0なら花の画像切替【ON】
- 通常変数「花の切替ON/OFF」が1なら花の画像切替【OFF】
ルールは上のとおり。それに従うかたちで、「花の切替ON/OFFが0と同じ」の起動条件を作ります。
後はセーブして保存。たったのこれだけで完了です。
通常変数「花の切替ON/OFF」が「0と同じ」とき(ON)だけ、このマップイベント「花の切替」が起動するようコントロールしているのが修正ポイント。「1と同じ」(OFF)なら起動しません。
方法その2:条件分岐で実行を振り分ける
もう1つが、条件分岐によって振り分ける方法です。こちらはちょっと複雑。
マップイベント「花の切替」の起動条件を「並列実行」に。下の変数の条件は使いませんので、チェックを外しておきます。
続いて、コマンド欄のループの中に「条件分岐」を入力します。
通常変数「花の切替ON/OFF」が「0と同じ」で、花の画像を切り替えるコマンドを実行させます。この条件分岐の中にコマンドをそのまま貼り付けてしまえばオッケーです。ウェイトのコマンドについては条件分岐の外で大丈夫。
条件分岐「1と同じ」場合はコマンドを入力しません。ループは実行しているけど、何も起こらないイベントとして機能させる感じです。
上の画像のようなコマンド欄になっていれば大丈夫。セーブして保存します。
1と2の方法だと、どちらがおすすめ?
1の起動条件に変数を使う方法が簡単です。管理しやすいのもメリット。
2の条件分岐による振り分けは、複雑なイベントを作る場面で使えるでしょうか?1の方法だと都合が悪いときに利用するのが良さそうです。
テストプレイで確認!
全ての作業が終わりました。テストプレイしてみましょう!
白い花→黄色い花へと、何度もぐるぐる切り替わる花の画像。花の前にいる魔法使いに近づき話しかけてみると、花の画像の切り替えがストップします。
その状態で、再び魔法使いに話しかけます。
すると、また花の画像が切り替わりはじめるはず。
そうなっていれば成功です!お疲れさまでした~。
「魔法使い」「花の切替」そして「花」。これら3つのマップイベントが連動して、今回のイベントが成立しています。
- 魔法使い:「花の切替」に命令する立場
- 花の切替:「魔法使い」の命令に従い作業する
- 花:「花の切替」に操られるまま~
3つのイベントの関係を簡単にあらわすと、上のような感じです。
ループの応用編とあって、ウディタ初心者さんには難しく感じる講座内容だったと思います。
ですが、ウディタに慣れてくると、こういったイベントを作る機会が増えるかもしれません。そんなときに、今回の講座でやったことを思い出してみてください。
次回の講座は?
やさしいウディタ講座14はここまで。
とりあえず、ループに関する講座は今回で終了です。難易度が高くて解説が大変でした…。
次回「やさしいウディタ講座15:複数の項目から選べる「選択肢」を作ろう」では、選択肢コマンドについて解説します。ループよりも簡単なコマンド(のはず)なので、気楽にやってみましょう~。
※全講座の目次ページはコチラ。