このコーナーでは、主に初心者さんに向けたイベントのテクニックを紹介していきます。
RPGツクールVXAceで説明していきますが、多くはVXや他のツクールでも可能です。
合言葉は「座標を変数に入れて分岐、座標を変数に入れて分岐、座標を変数に入れて分岐…。」
第十六回は
第11回で紹介した「座標監視イベント」の応用で
プレイヤーが移動したかどうかを判定するイベントを紹介します。
次回の講座で使う予定なのでさっくりとまとめました。
つづきはこちら、からどうぞ。
その前に・・・さて、いきなりコーナーの趣旨を台無しにするお話ですが
実は移動したかどうかを判定するだけならもっと簡単な方法を用意してあります。
私の作った
「プレイヤーの行動チェック」スクリプトの2番目の機能を使い
移動したときにオンになるスイッチを条件に使うだけです。
はい解散~。しかし次のケースでは今回紹介する方法を使ったほうが上手く組めます。
・移動したか移動していないか、よりも複雑な判定をする
・プレイヤー以外にも対応させる
・他の座標を使う処理と組み合わせる
要は目的に応じて上手く使おうということなので、自分にとって簡単な方を選びましょう。
移動監視イベントでは早速「並列処理」でイベントを組んでいきましょう。
1ページ目
変数の操作:変数A = プレイヤーのマップX
変数の操作:変数B = プレイヤーのマップY
スイッチAをonにする
2ページ目(条件:スイッチAがon)
変数の操作:変数C = 変数の操作:変数A
変数の操作:変数D = 変数の操作:変数B
変数の操作:変数A = プレイヤーのマップX
変数の操作:変数B = プレイヤーのマップY
条件分岐:変数C != 変数A
スイッチBをonにする
条件分岐:変数D != 変数B
スイッチBをonにする
このイベントの解説「プレイヤーが移動したらスイッチBがオンになる」という動作をします。
丁度上で紹介したスクリプトを使った場合と同じ働きですね。
先に2ページ目から見ていくと、変数ABにプレイヤーの座標が入っているのは分かりますね。
しかしその手前では変数CDに変数ABの内容が代入されています。
このイベントは並列処理でずっと繰り返し行われるので、変数ABには「今のプレイヤーの座標」が
変数CDには「前のプレイヤーの座標」が入っています。
それを条件分岐で同じかどうか判定し、違っていたら「移動した」ということでスイッチBをonにするのです。
ところがこれには1つ問題があって、一番最初の判定だけは
変数ABにプレイヤー座標が入っていないため移動したという誤判定が出てしまいます。
これを防ぐために1ページ目に1回だけ行われる、変数ABにプレイヤー座標を入れる処理を組んでいます。
場所移動のイベントにスイッチAをoffにする処理を追加することで、場所移動の際の誤判定も解消できます。
応用にむけてさてさて、冒頭でお話しましたように、移動したかを判定するなら
スクリプトを使ったほうが楽ですし、簡単ですし、ミスも減らせるのでオススメです。
ではこの方法のメリットは一体何かというと、座標を比べているという手段そのものです。
まず、座標の取得は変数の操作(ゲームデータ)で行っているため
主人公以外のイベントキャラクターについても同じく取得、判定が可能です。
自作システムを作る上でこれが必要になるケースはままあります。
それから、移動したかどうか、という判定自体は
変数ABCDに入っている「現在の座標」「移動前の座標」を使って条件分岐しているだけなので
これを弄れば幾らでも複雑な判定に変更することができます。
例えば「横に移動したかどうか」や「移動した上で、画面端にいるのかどうか」など。
あとは、他の判定で結局主人公の座標を使うようなケースですね。
それぞれのイベントがバラバラに主人公の座標を取得するよりも
これが「座標取得」代表として主人公の座標を取得しておくついでに移動判定をする
という風にしておいた方が効率が良いというわけです。
[3回]
PR
-->