イベント/移動

Last-modified: 2024-04-27 (土) 14:06:46

移動カテゴリ

キャラクターをマップの中で動かしたり、別のマップに移動させたりするカテゴリ。
作品を作るためにほぼ必要不可欠な「場所移動」のほか、演出や調整に使えるコマンドが盛りだくさん。
乗り物関連もここに揃っており、まさしく移動のために存在しているカテゴリだ。

中でも「移動ルートの指定」は過去作ほどの柔軟性はないがキャラの動きをしっかり制御する事が可能で
命令の内容も細かい仕様も多く、ただ歩かせるだけならまだ良いが
向き固定やらジャンプやらと凝った事をさせようと思うと色々慣れのいる項目。
それなりに検証したデータも置いたので、ぜひ参考にしてほしい。

イベントコマンド

場所移動

プレイヤーの場所を直接移動させるコマンド。
建物や施設の内外にでたり、ワールドマップに出たりの他ワープしたりなど色々出来る。
RPGを作るうえで重要なコマンドの1つなので、基本的な使い方は早めにマスターしたい。

直接指定

基本的なオプション。マップから移動する場所を直接指定する。
場所を見ながら設定出来るので難しいことはないはず。

ツクールはじめたての初心者がよくやらかすミスとして
建物に入ったはいいものの出られないという事態が起こったりする。
普通の移動イベントの場合は行きを作ったら帰りを作ることも忘れずに。

変数で指定

行先を変数で決定するオプション。変数の扱いに慣れた人向け。様々な利用法がある。
例えば、ドラクエでいうリレミトのような呪文を実現させる為
ダンジョンに入った時点で変数に居場所を記録して
あとからリレミトのような呪文を唱えれば入口に帰ってこられたり。

自作のパーティー編成画面を作る場合、マップ上でボタンを押すと
変数で現在いる場所を記録してから、パーティー編成用のマップに移動し
パーティー編成を終えた後、変数によって元の位置に戻る…など。

変数で指定出来ると運用の幅が広がる。それが出来るという事を頭のカタスミに置いておくと
いざというとき活用出来るだろう。

向き、フェード

  • 向きはその名の通り、マップを移動した後の向きを設定出来る。
    移動したあと違和感が出ないように、必要に応じて変えよう。
    テストプレイの時移動してから違和感がないかを一応見ておくこと。
  • フェードで場所移動コマンドを実行した際に画面が暗転するかを選べる。
    「画面のフェードアウト」コマンドと違って白も選べるので
    演出次第では白も選択肢にいれよう。
    • 一方、フェードなしは場所移動中の画像の配置などが見えてしまう。
      暗転の演出が無い分フェードありより速いのだが、見えてはいけないものが見えてしまい
      大きく没入感を損なってしまうものだ、基本的には上級者向けコマンド。
      ただし、移動前と同じマップに移動する際はリスクは少ない。

同じマップへの場所移動について

場所移動イベントを実行して別マップに移動すると、以下の事が発生する。

  • 各イベントが初期位置に配置される。
  • 一時消去したイベントが復活する。
  • 登録されたBGM・BGS自動演奏と現在再生されている音が違う場合、自動的に切り替わる。

しかし、同じマップに移動する場合は上記のうち最後のBGM・BGS切り替わりしか発生せず
一時消去したイベントが復活することも、イベントが初期位置に戻ることもない。
つまり、ほとんどプレイヤーだけが瞬間移動する形に近い。
この仕様は自分が作りたいもの次第でいい方向にも悪い方向にも働くだろう。

イベントの配置だけならマップカテゴリの座標のリセットでリセット出来るが
一時消去したイベントを復活させるには、他のマップ移動を挟む必要がある点に気を付けよう。

乗り物の位置設定

小型船・大型船・飛行船の位置を設定出来る。
データベースで設定した場所がない場合はここで初めてゲーム内のどこかのマップに登場することとなる。
場所の指定方法は上記の場所移動と同様、直接指定と変数指定が可能。
今いるマップとは別のマップに登場させることも可能なのがミソ。

地味に向きの指定が出来ない。仕様と割り切ろう。

イベントの位置設定

イベントの位置を瞬間移動させるコマンド。
場所移動と同じく直接指定や変数による指定が可能だが、別のマップには移れない。
それとユニークな点として「他のイベントと交換」というコマンドも持っている。
他イベントと交換に「このイベント」が指定出来るけど特に意味はない。なぜこんな選択肢が…
場所移動同様に向きの設定も可能。

普通に作る分にはそんなに頻繁に使うものではないが
移動ルート指定以外でもこういう移動方法があることを覚えておくと、使えるときが来るかもしれない。

マップのスクロール

マップをスクロールする…言い換えれば、カメラを動かすことが出来るコマンド。
ループしているマップか、或いはゲーム画面に映る範囲(26x14)より大きいマップでなければ
カメラが動かせる余裕がなく、コマンドが不発に終わってしまう。

カメラを動かす方向を上下左右から選び、移動量を指定することでカメラを動かせる。
このスクロールは基準がマス目であることに注意。ピクセル単位で動かすことは出来ない。
移動速度もキャラ移動のスピード基準で指定出来、完了までウェイトもついている。
動かし方は「小回りの利かない移動ルート指定」といった趣が強い。

移動ルートの設定

プレイヤーか、イベントを直接歩かせたりジャンプしたりなどでの移動を指定する。
イベントの設定「自律移動」の項で「カスタム」を選んだ時と同じ設定画面が出る。
キャラクター同士を動かすことによる演出において欠かせないイベント。

具体的に使える移動命令については次項で述べるとして、
まずは各オプションの説明をしよう。

  • 動作を繰り返す
    組んだ移動命令をループさせる。別の移動命令が入るまでずっと動作を繰り替えす。
    これを有効にした状態で”完了までウェイト”のオプションを同時に入れてしまうと
    他の並列処理イベントで移動命令をキャンセルしない限り次のイベントが実行されなくなってしまう。注意。
  • 移動できない場合は飛ばす
    移動命令1つ1つについて、それが実行できない場合はスキップする。
    例えば→→↓↓←←↑↑と組んだ時に、2マス右に柵がある場合は
    →↓↓←←↑↑と動き、→が1回分スキップされた事が分かる。入れておくと事故防止になるが
    実行位置の分かってるイベントに最初から入れてしまうと移動命令のミスに若干気づきにくくもなる。
  • 完了までウェイト
    移動命令が完遂されるまで次のイベントコマンド実行を待つ。
    組み方が悪いとずっとイベントコマンドが実行されなくなる点に注意。
    これを組んだイベントはしっかりめにテストをしたい。
  • プレビューについて
    予め移動ルートコマンドによるキャラクターの動作を確認出来る便利機能。
    正確に目的地に歩かせたい時に特に有効。
    ただ、表示が遅い点や命令が長いと全部は見せてくれないなど色々粗がある。
    しかしこの機能はPCツクールですら導入に長い年月を要した機能。
    存在するだけでありがたいのは間違いないので、ある程度は諦めた方がいいかもしれない。

移動命令一覧

*付きは下で詳しく説明する。

名前挙動
下/左/右/上に移動
ランダムに移動
プレイヤーに近づく*プレイヤー自身の実行や、完全にプレイヤーと同じ位置だと移動しない。
プレイヤーから遠ざかる*プレイヤー自身の実行や、完全にプレイヤーと同じ位置だと移動しない。
ジャンプ*X,Yの増加量を指定し(マイナス指定可)、指定した地点に跳ぶ。
ウェイト
下/左/右/上を向く
ランダムに方向転換
プレイヤーの方を向く*
プレイヤーの逆を向く*
移動速度の変更1/8,1/4,1/2,標準,2倍,4倍の計6段階。直接指定のみ。
移動頻度の変更*最低、低、標準、高、最高の系5段階。直接指定のみ。
歩行アニメON/OFF移動中にアニメーションするかどうか。
足踏みアニメON/OFF移動していない時もアニメーションするかどうか。
向き固定ON/OFFONだと、歩行時でない直接の向き指定も無視する。
すり抜けON/OFFONだと地形無視、他のキャラからもすり抜け対象に重なれる。
透明化ON/OFF完全に透明になる
画像の変更アクターに使うと完全に歩行画像が差し変わる模様。
過去作で使えた命令一覧

過去作で使えた命令の中には結構有用なものも多かった。

名前挙動
一歩前進その時向いている方向に歩く
左上/右上/左下/右下に移動ナナメ移動
透明度上昇/下降キャラクターの不透明度を調整出来た。今作は完全透明か完全不透明のみ。
効果音の再生
スイッチON
スイッチOFF
左/右/どちらかに90度回転
180度回転
  • 移動ルート設定画面について
    移動ルート設定画面でも、コピー・カット・ペースト・削除・編集*1が実行出来る。
    ただうっかりキャンセルしてしまうと、確認画面もなく折角のデータがオジャンにされてしまう事もあるので
    ある程度組んだら自主的にOKを押して作業内容をマメに保存するよう心がけよう。
    編集については、命令に直接Aボタンを押しても編集出来ない。ZLボタンを押してから選ぶ必要があることに注意。

各命令の詳細な挙動

いくつかの命令は詳しく検証してみた。

  • プレイヤーに近づく
    プレイヤーに一番近づける方向に1歩歩く命令。
    この命令はを実行した時、縦横どちらか遠いほうから距離を詰めるようになっている。
    縦横ともに同じだけ離れている場合は、縦を優先して歩く。
    プレイヤーと完全に同じ位置、或いはプレイヤー自身が実行すると何も起こらない。
  • プレイヤーから遠ざかる、プレイヤーの逆を向く
    プレイヤーから距離を取る命令。
    …なのだが、実際には結構クセのある命令でこれだけをループしても
    マトモに逃げてくれなかったりする。
    プレイヤーの位置が実行者よりも1つでも上の位置にいると、横の座標に関わらず実行者は必ず下に逃げ、
    プレイヤーの位置が実行者の真下にいるときのみ、実行者は上に逃げる。
    それ以外の場合は、実行者は横に逃げる。

    という若干変則的な挙動を取る。
    これを捕まえようと思ったら、真横に逃がして壁に追い詰めると
    そこから上下には逃げないので結構簡単に捕まえられる。
    もっとちゃんと逃げるようにしたい場合はおそらく並列処理イベントでのフォローが必要だろう。
    プレイヤーの逆を向くも似たような挙動だが、こちらはそこまで使いにくくはない。
    ただ、常にプレイヤーの逆を向くような設定にすると粗が出やすくなる。
  • プレイヤーの方を向く
    これもプレイヤーのから遠ざかったり逆を向くのと同じくかなり大味な設計。
    プレイヤーの位置が実行者よりも1つでも下の位置にいると、横の座標に関わらず実行者は必ず下を向き、
    プレイヤーの位置が実行者の真上にいるときのみ、実行者は上を向く。
    それ以外の場合は、実行者は横を向く。

    という若干変則的な挙動を取る。逆を向く挙動の反対。
    これも常にプレイヤーの方を向くような設定にすると粗が出やすくなる。
  • ジャンプ
    X,Yの増加量を指定し(マイナス指定可)、指定した地点に跳ぶ。
    プレイヤーが実行した場合は隊列メンバーも跳ぶ。
    …なのだが実はこの命令、着地点の通行可否は全く考慮していない。
    壁の中にも普通に跳ぶし壁の中からも普通に跳ぶので、雑な跳び方をすれば簡単にハマってしまう。
    更に、プレイヤーがジャンプ処理を連続すると不具合によるものかジャンプ同士の間にウェイトがかかってしまう。
    このため並列処理イベントに組んでボタンでプレイヤーがジャンプする機能を実装するのは障害が多いことに注意。
    古いPCツクール作品には結構実装されてたんだけどね…

    プレイヤーが隊列の集合中に使ったりすると隊列メンバーが変な場所に跳ぶようだが、この現象については未検証。

    ジャンプのフレーム数についても検証してある。下の項目を参照のこと。
  • 移動頻度の設定
    頻度は高いほど命令と命令の実行の間の間隔が短くなり、逆は長くなる。
    間隔を真ん中くらいにすることでドラクエなんかでよくある、間隔を開けて1歩づつランダムに動くNPCが作れる。
    しかしこの命令、実行しているイベント自身には効果が無い事に注意。
    実行しているイベント自身以外には有効。
    実行しているイベント自身は、強制的に移動頻度最高に設定される。
    若干バグくさい挙動、報告すれば修正されそうだ。

フレーム数リスト

キャラクターを歩行させるとき、移動速度と移動頻度それぞれにおいて
12歩歩かせた上で移動に何フレームかかるかを計測してみた。
移動ルートの設定で緻密な同期が必要になる場合に役立つだろう。
是非イベント作りの参考に役立てて頂きたい。
但し、フレームにズレが生じかねない設計となっているため
必ずしも毎回完全に同期がとれるとは限らないので
ある程度のズレは許容できる設計にしておく事が求められる。
(実際、この検証も12歩歩かせてデータを取ったが
さほど重い環境でないにも関わらず、1歩毎に1Fのズレが発生する事があった。)

速度頻度
最低標準最高
1/8240210180150120
1/41801501209060
1/2150120906030
標準135105754515
2倍1289868388
4倍1249464344
間隔1209060300

「間隔」は移動と移動の間に挟まるウェイト。
移動頻度によって発生する間隔のフレーム数。

ジャンプのフレーム数リスト

速度移動量
0123456789斜2斜3斜4斜6斜8
1/8111213141516171819201213141517
1/4101112131415161718191112131416
1/291011121314151617181011121315
標準891011121314151617910111214
2倍速7891011121314151689101113
4倍速67891011121314157891012

斜と書いてあるのはナナメ方向にジャンプしたときのデータ。
例えば斜4はx2y2で検証している。偶数は全部それ。
奇数は斜3のみだが、x1y2、x2y1の両方で検証して全部データが同じだった。

表で見ると歩行に対しかなり速度の影響力が薄い事が良く分かる。
距離1に対しても直線だと1Fずつしか増えておらず、長い距離ほど早さが実感できるだろう。
逆に距離1を飛ぶくらいなら4倍速歩行のほうが速い。

もっとデータ採ったほうが法則性が見えそうだが
まあおおむねのデータは採れたのでこのへんで妥協した(やってるとキリないし)

乗り物の乗降

小型船/大型船/飛行船に乗るか、降りるコマンド。BGMも乗った時/降りた時相応のものに変化する。
プレイヤー操作でも乗り込める正しい位置と、正しい向き*2でないと失敗することに注意。
例えば小型船や大型船の場合、プレイヤーが船の隣にいて船のほうを向いていないといけないし、
飛行船はプレイヤーと重なった状態でないと乗り込めない。
また、プレイヤーが通行可能なタイルでないと降りることは出来ない。
小型/大型船の場合は船の向いている方向にプレイヤーを降ろし、飛行船の場合は影がある場所に直接プレイヤーを降ろす。
これらの降ろす場所がプレイヤーの通行可能タイルでない場合、乗り物に乗ったままの状態となってしまう。
乗り物に乗っているかどうかの状態は条件分岐でチェックが可能なので、万一が起こりうる場合はこちらで確認しよう。

乗り物にのったままの状態でもイベントは進行可能。条件分岐もあるので当然とも言えるが…。
この場合、移動ルート指定のコマンドでプレイヤーを動かせば乗り物に乗ったままの状態でイベントが動く。
これを利用して乗り物に乗ったまま各種演出を見せることが可能。展開やアイデア次第で活かせるだろう。

当然かもしれないが、乗り物に乗っている間その乗り物の位置設定イベントは無視される。

コメント欄


*1 ジャンプや移動速度/頻度など、値を設定できるもののみ。
*2 飛行船は向きは関係ない。