移動ルートの設定 / ツクールMVスクリプトリファレンスwiki
ツクールMVで移動ルートの設定をスクリプトで行うなら以下の通りです。
this.character(キャラクターID).forceMoveRoute({
"list":[{"code":コードID,"parameters":パラメータ}
{"code":コードID,"parameters":パラメータ}],
{"code":0}], //ルート入力終了 *必須
"repeat":true か false, //動作を繰り返す
"skippable":true か false}) //移動できない場合は飛ばす
//移動中にウェイトをかけるなら以下のコードを追加
this._character = this.character(キャラクターID)
this.setWaitMode('route')
サンプルコード(キャラクターIDが1のキャラの移動ルートに下に移動、60フレームウェイト、x方向に1・y方向に2ジャンプ、SEの演奏を設定、繰り返しはoff、飛ばさない、完了までウェイトする)
this.character(1).forceMoveRoute({
"list":[{"code":1},
{"code":15,"parameters":[60]},
{"code":14,"parameters":[1,2]},
{"code":44,"parameters":[{"name":"Applause1","volume":90,"pitch":100,"pan":0}]},
{"code":0}],
"repeat":false,
"skippable":true})
this._character = this.character(1)
this.setWaitMode('route')
コード解説
1行目:this.character(キャラクターID).forceMoveRoute({
"this.character(キャラクターID)"で指定したキャラクターの情報を取得します。
キャラクターIDは「-1」などの負の数でプレイヤー、「0」でこのイベント、正の数でイベントIDを指定します。
"forceMoveRoute"メソッドではパラメータに連想配列を持ちます。
連想配列とは対になる要素を持つ配列のことです。
連想配列の例1
hash1 = {'キー': '要素' , '剣': 'バスターソード' , '斧': 'パワーアックス'}
連想配列の例2
hash2 = { weapon: 'ダガー' , armor: '鎖帷子' };
連想配列の参照の仕方
hash1['剣'] //バスターソードが返される
代入したパラメータを"forceMoveRoute"メソッドでは実際の処理に使用する変数に代入します。
2行目:"list":[{"code":コードID,"parameters":パラメータ}
ここからのコードで実際の移動ルートを指定します。
"list"というキーが[]内の値で表される配列の要素となっています。
[]の配列の要素はさらに連想配列となっており、それぞれの"code"を指定し、必要がある項目は"parameters"を指定します。
コードIDについては以下の通りに対応しています。
ルートエンド:{"code":0}
下に移動:{"code":1}
左に移動:{"code":2}
右に移動:{"code":3}
上に移動:{"code":4}
左下に移動:{"code":5}
右下に移動:{"code":6}
左上に移動:{"code":7}
右上に移動:{"code":8}
ランダムに移動:{"code":9}
プレイヤーに近づく:{"code":10}
プレイヤーから遠ざかる:{"code":11}
一歩前進:{"code":12}
一歩後退:{"code":13}
ジャンプ:{"code":14, "parameters":[x座標,y座標]}
ウェイト:{"code":15, "parameters":[ウェイトするフレーム数]}
下を向く:{"code":16}
左を向く:{"code":17}
右を向く:{"code":18}
上を向く:{"code":19}
右に90度回転:{"code":20}
左に90度回転:{"code":21}
180度回転:{"code":22}
右か左に90度回転:{"code":23}
ランダムに方向転換:{"code":24}
プレイヤーの方を向く:{"code":25}
プレイヤーの逆を向く:{"code":26}
スイッチON:{"code":27, "parameters":[スイッチID]}
スイッチOFF:{"code":28, "parameters":[スイッチID]}
移動速度の変更:{"code":29, "parameters":[移動速度]}
移動頻度の変更:{"code":30, "parameters":[移動頻度]}
歩行アニメON:{"code":31}
歩行アニメOFF:{"code":32}
足踏みアニメON:{"code":33}
足踏みアニメOFF:{"code":34}
向き固定ON:{"code":35}
向き固定OFF:{"code":36}
すり抜けON:{"code":37}
すり抜けOFF:{"code":38}
透明化ON:{"code":39}
透明化OFF:{"code":40}
画像の変更:{"code":41, "parameters":[画像名,インデックス]}
不透明度の変更:{"code":42, "parameters":[不透明度]}
合成方法の変更:{"code":43, "parameters":[合成方法]}
SEの演奏:{"code":44,"parameters":[{"name":"SEファイル名","volume":音量,"pitch":ピッチ,"pan":位相}]}
ルート入力の最後には{"code":0}を必ず入れてください。
これを入れないとルートの最後が認識されず、イベントが正常に処理されずにすり抜けの状態で固まってしまいます。
移動ルートの入力は例では縦に並べましたが、以下のように横に並べることも可能です。
{"code":1},{"code":2},{"code":3},{"code":4}…
横に並べるとコマンドをより多く入れることが出来ますが、ルートを確認するときなど、横にずらさないと見えないため、可読性が下がります。
場合に応じて使い分けてください。
5行目:"repeat":true か false,
ここで移動ルートの繰り返しをするかを決めています。
trueで繰り返しを行い、falseで繰り返しません。
この記述は省略可能で、省略した際には繰り返しはfalseとなり、繰り返しされません。
6行目:"skippable":true か false,
移動ルートで通行できないなど、ルートを実行できない時にスキップするかどうかを決めています。
trueでスキップし、falseでスキップしません。
この記述は省略可能で、省略した際にはスキップはfalseとなり、スキップされません。
7行目:this._character = this.character(キャラクターID);
ウェイトをかける際は"this._character"という変数にどのキャラクターの移動ルートを待つのかを設定しなければなりません。
this.character(キャラクターID)は上の方でも出てくるので、以下のようにまとめて変数に入れておいてもokです。
chara = this.character(1);
this._character = chara;
ウェイトをかけない際はこの7,8行目は記述する必要ありません。
8行目:this.setWaitMode('route');
移動ルートのウェイトをここで設定しています。
移動が完了し次第、ウェイトが解除されるモードです。
移動ルートの設定はこのように長く、分かりにくいコードとなります。
しかし、省略可能な部分が多いので繰り返しなし、スキップなし、ウェイトをかけないという条件であれば以下のように短くすることも出来ます。
サンプルコード(下に移動し、左に移動する 繰り返しなし、スキップなし、ウェイトなし)
this.character(2).forceMoveRoute({
"list":[{"code":1},{"code":2},{"code":0}]
})
ツクールMVスクリプトリファレンスwikiトップページへ戻る
オリジナルシステムなどの製作依頼・相談があればプラグイン・マップ等個別製作依頼のページまでお願いします。