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