指定位置に岩を動かすイベントを作る
「押せる岩を作る」では、プレイヤーキャラクターが押すことの出来る岩の作成例を解説しましたが、その応用として「指定位置に岩を動かす」イベントを作ってみましょう。
下の画像で赤く囲んだ 2 つの岩を、青く囲んだタイルの上に両方とも移動させると、奥の扉(鉄格子)が開くイベントの作成例を通して解説していきます。
指定位置の判定方法
ここでポイントとなるのが、岩が指定した位置に移動したかどうかを、どう判定するのかということです。これにはいくつかの方法があって、どれが正解とは言い難いのですが、ここでは「リージョン」を使った判定方法を解説しましょう。
まずは、タイルパレットの[ R ]をクリックしてリージョン編集モードに切り替え、岩を置く場所のリージョンID を指定します。何番でも良いですが、ここでは 20 番としておきます。
次に使うのは、イベントコマンド[指定位置の情報取得]です。
[情報タイプ]で[リージョンID]を選択しておくと、[場所]で指定した座標の「リージョンID」の数値を、[変数]で指定した変数に格納します。この例の場合、指定位置に置くマップタイルのリージョンID は 20 ですから、岩が指定位置にあれば変数には 20 が格納されますし、指定位置になければ 20 以外の数値が格納されます。ですので、この変数に格納されている数値を見れば、岩が指定位置に置かれているかどうかが分かるわけです。
岩の位置の取得方法
次の問題は、岩の「位置」です。岩の位置が分かれば、[指定位置の情報取得]を使ってその位置のリージョンID の数値を取得することで、岩が指定位置にあるかどうかが分かります。しかし、岩はプレイヤーキャラクターによって動かされてしまいますので、それに伴って岩の位置も変わってしまいます。
そこで使用するのが、イベントコマンド「変数の操作」です。
岩が動いた後、[変数の操作]を使って「このイベント(岩)」の「座標」を変数に格納すれば、動いた後の岩の座標が分かります。岩が動くたびに座標を取得しますので、常に最新の座標が分かることになります。
あとは、この座標が格納されている変数をイベントコマンド[地形位置の情報取得]の[場所]に指定してあげれば、岩が動くたびに、岩の位置のリージョンID を取得出来るようになります。
では、これらのことを踏まえた上で、実際にイベントを作成していきましょう。
イベント作成例
1つ目の岩イベントの作成
まずは、1 つ目の岩のイベントからです。基本は「押せる岩を作る」の設定のままで、そこに設定を追加していく形をとります。
岩とプレイヤーキャラクターが動いた後で、イベントコマンド[変数の操作]で岩(このイベント)の X 座標と Y 座標の数値を、それぞれ別の変数に代入します。これにより、岩の座標が取得出来るというわけです。
次に、イベントコマンド[指定位置の情報取得]を設定します。[位置]は[変数で指定]を選んで、先ほど岩の座標を取得した変数をそれぞれ指定します。[情報タイプ]は[リージョンID]を選び、[変数]には座標を取得したのとは別の変数を指定します。これで、[変数]で指定した変数に、岩の座標のリージョンID の数値が代入されることになります。
その次は、リージョンID を受け取った変数の数値が 20 かどうかで[条件分岐]を行います。20 ならば、岩は指定位置にあるわけですから、スイッチを ON にします。ここでは、「岩 A OK」というスイッチ名にしています。20 以外ならば、岩は指定位置にありませんので、スイッチを OFF にします。
最後に、イベントコマンド[コモンイベント]でコモンイベントを呼び出します。これは、すべての岩が指定位置にあるかどうかを判定するコモンイベントです。コモンイベントの設定については、あとで解説します。
続いて、2 ページ目の設定を行います。
扉が開いた後は、岩が指定位置にあるかどうかを判定する必要はありませんので、扉が開いたことを示すスイッチを出現条件とし、実行内容は岩が動くだけのものにしています。ですので、扉が開いた後は岩を押すことは出来ますが、何も起こりません。
これで、1 つ目の岩イベントが完成です。
2つ目の岩イベントの作成
2 つ目の岩イベントは、1 つ目の岩イベントをコピーした上で、一部を修正します。
見ての通り、ON / OFF するスイッチを別のスイッチに変えただけです。最初設定されていたスイッチは、1 つ目の岩が指定位置にあるかどうかを判断するためのスイッチでしたので、2 つ目の岩が指定位置にあるかどうかを判断するためには、別のスイッチを使用します。
これで、2 つ目の岩イベントも完成です。
ちなみに、岩を 3 つ以上にしたい場合も、同じ要領で 1 つ目の岩をコピーし、指定位置にあるかどうかを判断するためのスイッチを別のスイッチに変更してください。
扉イベントの作成
扉イベントの作成は簡単です。
- 1 ページ
- 扉のグラフィックを設定するだけです。「扉は固く閉ざされている」などのメッセージが出るようにしても良いでしょう。
- 2 ページ
- 岩イベントの 2 ページ目の出現条件として設定したものと同じスイッチを出現条件とし、グラフィックは未設定にしてください。それ以外の項目も設定の必要はありません。
判定イベントの作成
最後に、すべての岩が指定位置にあるかどうかを判定するイベントをコモンイベントで作成します。
イベントコマンド[条件分岐]を重ねて使って、それぞれの岩が指定位置にあるかどうかを判断するスイッチがすべて ON であれば、[SE の演奏]で扉が開く SE を鳴らして、扉が開いたことを示すスイッチを ON にします。
岩の数が 3 つ以上ある場合も、[条件分岐]の数を増やして、すべてのスイッチが ON の時に扉が開く動作を設定するだけです。
これで、指定位置に岩を動かすイベントがすべて完成しました。ちょっと難しかったかもしれませんが、まずはこの解説通りに作ってみて、イベントの仕組みを理解した上で、自分なりのイベントにアレンジしてみてください。
ゲーム画面(1)
●岩を押して、所定のタイルの上に置く
●もう一つの岩も所定のタイルの上に置くと、扉が開く
●扉が開いた後は、岩をどう動かそうが何も起こらない
ゲーム画面(2)
仮に隅など動かせない場所に動かして「ハマって」しまった場合でも、一度マップを切り替えると岩は元の場所に戻るので、何度でもやり直せます。
●岩を隅に置いてしまったのでもう動かせない。しかし……
●一度マップを切り替えて戻ってくると元の場所に戻っていて安心