こんにちは。
もう9月真ん中まで来ちゃった!? やばい(;´Д`)
RPGツクールMZ(RPGMakerMZ)でプラグイン・スクリプトを使わない入力判定作成メモ&サンプルプロジェクト企画、今月中に完成できるか!?
とにかく進めておきましょう。第7回目。
今回はちょっと変わった内容で、入力判定するというよりもその補助的なものです。
今までサンプルとして作ってきたものは全部決定キー(ボタン)の入力を判定するものでした。
RPGツクールMZ製のゲームは決定キーの他に方向キー、キャンセルキー、シフトキーが使われることが多いのですが(ゲームによっては他のキーもありますが基本的には)、マップシーンに於いて方向キーを押せば当然移動しますし、キャンセルキーを押せばメニューが起動するようになっています。
それらの意図しない挙動をなんとかするというのがSTEP7です。
まずはキャンセルキーで起動してしまうメニューですがこれを制御するのは簡単で、イベントコマンドにメニュー禁止の変更っていうのがあるのでこれで禁止にするだけです。
ちょっとだけ問題なのが方向キーによる移動ですが、プラグインでそういったものはあると思うのでそれを使えばいいでしょう。
ただこの企画の主旨の一つとして”通常イベントコマンドでなんとかする”ってのがあるので対策を提案しておきます。プラグインは競合など不具合を起こす可能性もありますから、こういったことを予備として知っていても損は無いでしょう。
方法は簡単にいうと"壁を作って移動できないようにする” です。壁は通行不可のタイルでもいいしイベントでもいいと思います。囲ってしまえば当然移動はできないですよね。
強引ですが単純明快。タイルの場合はプレイヤーをその場所へ置かなければならないのでイベントのほうが使い易いですかね。
透明で通行不可のイベントを画面外などゲーム進行に支障のない場所へ置いておき、プレイヤーの座標を取得→周囲にイベントを移動、という流れです。
プレイヤーの座標を取得するには"変数の操作"でX座標、Y座標を格納するための変数を作ってプレイヤーマップX とプレイヤーマップY を代入します。
そんでもって"イベントの位置設定"でその変数を使って通行不可イベントをプレイヤーの周囲4方向に配置します。
プレイヤーの座標を(x,y)とするなら(x+1,y)、(x-1,y)、(x,y+1)、(x,y-1)の4か所に配置するのでこうなります↓
サンプルではわかり易くするためにイベントに少し色を付けています。
これで移動はできなくなりますが方向キーを押せば向きは変わります。
ゲーム内のシチュエーション的にプレーヤーを消してしまっても良いならイベントコマンドの”透明状態の変更”だけで良いでしょう。
そうでないときは移動ルートの設定で”向き固定”オンにすると方向キーを押しても向きが変わらなくなります。
これで方向キーによる移動、向きの問題は解決ですね。
シフトキーはデフォルトではダッシュ用のキーになっていて、移動せずに押しても何も起こらないので特に何も対策は要らないと思います。
もし移動を禁止しない場合、決定キーは他イベントの実行トリガーになりますね。つまり会話とか調べるとかのアクションです。まぁこれは入力判定時のスイッチを使って処理が発生しないようにイベントページを作ってやるだけで大丈夫。イベントが多いと大変ですが。
こういうこと↓
これで各キー(ボタン)の入力判定”だけ”が働く状況を作れますね。
今回は以上です。ありがとうございました。
まだ時間がかかりそう・・・いそげ(;´Д`)