6
Help us understand the problem. What are the problem?

More than 5 years have passed since last update.

posted at

RPGツクールMVに「指定したキャラクターの方へ歩く」があった件

move.png
「移動ルートの設定」には「スクリプト」を書ける機能があります。
どうやって活用するか迷われる方も多いと思いますが、その有効活用例を見つけたのでお伝えします。

既存の「移動ルートの設定」には「プレイヤーに近づく」というボタンがあります。(半分隠れてますが上図にも写ってますね)
しかしながら、ゲームを作っていると「特定のマップイベントに近づく」ボタンもほしいなあ…とか思ったりします。
(例えば「ランダムに歩くマップイベントを追跡するマップイベント」とか)
こんな時は「スクリプト」ボタンを押し以下のように記述してみましょう。

this.moveTowardCharacter($gameMap.event(1))

なんとこれだけの記述で「イベントID:001のマップイベントに向かって(一歩)歩く」という機能を実現できます!ほぼ英語の意味そのままですね!

じゃあ「マップイベントID:001から遠ざかる」は…?もちろん可能です!

this.moveAwayFromCharacter($gameMap.event(1))

少し書き換えただけですね!
さらに、「指定したマップイベントの方を向く」はthis.turnTowardCharacter(マップイベント)、「指定したマップイベントの逆を向く」はthis.turnAwayFromCharacter(マップイベント)で可能です!

ちなみにこのスクリプト、読んで分かる通りカッコの中にはキャラクター(マップイベントやプレイヤーなど)を指定するルールになっています。
が、実は内部処理的にはx座標とy座標しか使用していません。
ですので以下のように、座標しか持っていない偽装キャラクターでも正常動作します。

this.moveTowardCharacter({x: 3, y: 4})

座標(3,4)に向かって(一歩)歩く、という移動ルートになりますね。
これだけではピンと来ないかもしれませんが、これを少し変形して
「座標(変数1番,変数2番)に向かって歩く」とするとめちゃくちゃ応用性が高まります。
書き方は以下。

this.moveTowardCharacter({x: $gameVariables.value(1), y: $gameVariables.value(2)})

たった一行でもスクリプトを活用すれば随分簡単に作りたいことが作れます。
食わず嫌いせずにいろいろためしてみるといいと思いますよ~


余談

ただし「スクリプトすげえ!!英語で書いたことが何でも実行できるんだ!」とか思ってはいけません…
「moveTowardCharacter」などの4種類の機能は「ツクール本体のスクリプトの中には眠っていたものの、エディタからは選べなかった機能」です。
もっと言うと、移動ルートの設定の「プレイヤーに近づく」は本体内部でこういう形で記述されていました。

this.moveTowardCharacter($gamePlayer)

つまり「プレイヤーに近づく」は「指定したキャラクターに近づく」と「指定したキャラクター=プレイヤー」の2つの記述の組み合わせで構成されていたわけです。
そしてこの「指定したキャラクターに近づく」ですが…なんと他のどの部分でも使用されていませんでした!!
こんなに色んな用途に使える機能なのに、「移動ルートの設定の、プレイヤーに近づく」という限られた用途にしか用いられていなかったのです。もったいなさすぎるっ(笑)

…というわけで今回たった一行で新たな機能が使えたのは、
あくまで「ツクールの中に眠っている機能を掘り起こしただけ」だったからなのです。
以前投稿したRPGツクールMVで「キーが押された瞬間」だけ条件分岐でも
たった一行で機能を実現していましたが、これも同様に掘り起こした機能です。

もしあなたがツクールにない新しい機能をスクリプトで実現したい時は…
たぶん一行ではすまないと思いますのでそこだけはご了承ください。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Sign upLogin
6
Help us understand the problem. What are the problem?