【解決済み】キャラクターの移動に関する仕様について

返信する
ぷらずま
記事: 10
登録日時: 2020年11月11日(水) 16:28

【解決済み】キャラクターの移動に関する仕様について

投稿記事 by ぷらずま »

いつもお世話になっております。
只今RPGツクールMVにて、マップ上でアクション要素のあるゲームを作成しています。
そこでキャラクターの移動の細かい仕様についてお伺いしたいです。

〇聞きたいこと
・移動速度:標準速 で1マス隣に移動した時、移動開始から移動完了まで何Fかかるのでしょうか。

・移動速度:標準速 で隣り合うマス(A→B)へ移動し、Bのマスに「プレイヤーから接触」の
 イベントが設定されていた場合、Bのマスのイベントが発生するのは移動開始から何F後になるのでしょうか。

・移動頻度とは何なのでしょうか。(無知で申し訳ないです)

・RPGツクールMVで感動ものを作る。 (http://ktnhmv.jugem.jp/?cid=7) ←のサイト様で、
 「主人公の移動速度と、マップ上に配置された全てのキャラクターの移動速度を司っている処理」として
  rpg_object.js の 6368行目(現ver)に記述されている
 
  Game_CharacterBase.prototype.distancePerFrame = function() {
    return Math.pow(2, this.realMoveSpeed()) / 256;
  };
 
  が挙げられているのですが、この中の 256 とはつまり何の数字なのでしょうか。
 (自作のゲームでは 192 に変えたのですが、移動速度は 256/192 倍になったのでしょうか)

質問が多くて申し訳ないのですが、分かる方いらっしゃいましたら、お願いいたします。
最後に編集したユーザー ぷらずま [ 2021年2月04日(木) 14:06 ], 累計 1 回
ecf5DTTzl6h6lJj02
記事: 715
登録日時: 2018年12月23日(日) 13:55

Re: キャラクターの移動に関する仕様について

投稿記事 by ecf5DTTzl6h6lJj02 »

こんにちは。
ぷらずま さんが書きました:いつもお世話になっております。
只今RPGツクールMVにて、マップ上でアクション要素のあるゲームを作成しています。
そこでキャラクターの移動の細かい仕様についてお伺いしたいです。

〇聞きたいこと
・移動速度:標準速 で1マス隣に移動した時、移動開始から移動完了まで何Fかかるのでしょうか。

・移動速度:標準速 で隣り合うマス(A→B)へ移動し、Bのマスに「プレイヤーから接触」の
 イベントが設定されていた場合、Bのマスのイベントが発生するのは移動開始から何F後になるのでしょうか。

・移動頻度とは何なのでしょうか。(無知で申し訳ないです)

・RPGツクールMVで感動ものを作る。 (http://ktnhmv.jugem.jp/?cid=7) ←のサイト様で、
 「主人公の移動速度と、マップ上に配置された全てのキャラクターの移動速度を司っている処理」として
  rpg_object.js の 6368行目(現ver)に記述されている
 
  Game_CharacterBase.prototype.distancePerFrame = function() {
    return Math.pow(2, this.realMoveSpeed()) / 256;
  };
 
  が挙げられているのですが、この中の 256 とはつまり何の数字なのでしょうか。
 (自作のゲームでは 192 に変えたのですが、移動速度は 256/192 倍になったのでしょうか)

質問が多くて申し訳ないのですが、分かる方いらっしゃいましたら、お願いいたします。
まず、移動速度の仕様から。

コード: 全て選択

Game_CharacterBase.prototype.distancePerFrame = function() {
    return Math.pow(2, this.realMoveSpeed()) / 256;
};
このコードは、1フレームで移動する距離(単位: マス)を計算するものです。
this.realMoveSpeed() は 設定してある移動速度の数字にダッシュしている場合は1を加算した値を返します。
イベントの場合、速度の欄の : の前の数字です。
プレイヤーの場合は 特に変更していない場合 4:標準速 に設定されています。
Math.pow(a, b) は a の b 乗 を計算する関数なので、
プレイヤーのダッシュしていない時の1フレーム当たりの移動距離は
2 の 4 乗 / 256 = 16 / 256 = 1 / 16
で 1/16 マス ということになり、 1マス移動するためには16フレームかかるということになるかと思います。
2 の 移動速度 乗 / 256 という計算式なので、 移動速度が1上がるごとに 2倍、 1下がるごとに 1/2 倍 となります。
(速度の欄の文言と一致するはず)
256 という 除算の数字に関しての根拠については、推測になりますが、移動速度が最大のときの1マスの移動に2フレームかかるようにしたかったのではないかと思います。(特に大きな意味のある数字ではないと思います)
これが移動速度の質問に対する回答になるかと思います。
(移動とイベントの起動の間に1フレームはさんだ気もするけど確認してないです。すみません)

次に、移動頻度についてです。
移動頻度は、自律移動の移動から次の移動までのインターバルです。

コード: 全て選択

Game_Event.prototype.stopCountThreshold = function() {
    return 30 * (5 - this.moveFrequency());
};
という関数で計算されています。(単位: フレーム)
this.moveFrequency() は設定してある移動頻度を返します。
移動速度と同様イベントの場合は頻度の欄の : の前の数字です。
プレイヤーの場合は 6 (5が最高のはずなのに、なぜか6)が設定されています。
イベントの移動頻度が、3: 標準に設定されていた場合、移動から移動のインターバルは
30 * (5 - 3)= 60
で、60 フレームとなります。
このインターバルは、イベントコマンドの移動ルートの設定のコマンドごとのウェイトにはなりませんが、
自律移動 タイプ: カスタム で移動ルートを設定した際の、コマンドごとのウェイトにはなるので注意してください。

以上が、質問の回答になるかと思います。

(きっちり調べて書いてないので、間違ってる記述等がありましたら、どなたか修正お願いします)
ぷらずま
記事: 10
登録日時: 2020年11月11日(水) 16:28

Re: キャラクターの移動に関する仕様について

投稿記事 by ぷらずま »

ecf5DTTzl6h6lJj02 様

とても丁寧で分かりやすいご返答ありがとうございます。
ご返答を基に自作ゲームで移動速度や移動にかかる時間(F)を検証してみたところ、
ほぼ理論値通りの結果を得られました。
これでよりゲーム制作が捗ります。
重ねて申し上げますが、ありがとうございました。
返信する

“MV:質問”に戻る