いつもお世話になっております。
只今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 回
-
- 記事: 715
- 登録日時: 2018年12月23日(日) 13:55
Re: キャラクターの移動に関する仕様について
こんにちは。
このコードは、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フレームはさんだ気もするけど確認してないです。すみません)
次に、移動頻度についてです。
移動頻度は、自律移動の移動から次の移動までのインターバルです。
という関数で計算されています。(単位: フレーム)
this.moveFrequency() は設定してある移動頻度を返します。
移動速度と同様イベントの場合は頻度の欄の : の前の数字です。
プレイヤーの場合は 6 (5が最高のはずなのに、なぜか6)が設定されています。
イベントの移動頻度が、3: 標準に設定されていた場合、移動から移動のインターバルは
30 * (5 - 3)= 60
で、60 フレームとなります。
このインターバルは、イベントコマンドの移動ルートの設定のコマンドごとのウェイトにはなりませんが、
自律移動 タイプ: カスタム で移動ルートを設定した際の、コマンドごとのウェイトにはなるので注意してください。
以上が、質問の回答になるかと思います。
(きっちり調べて書いてないので、間違ってる記述等がありましたら、どなたか修正お願いします)
まず、移動速度の仕様から。ぷらずま さんが書きました:いつもお世話になっております。
只今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;
};
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 フレームとなります。
このインターバルは、イベントコマンドの移動ルートの設定のコマンドごとのウェイトにはなりませんが、
自律移動 タイプ: カスタム で移動ルートを設定した際の、コマンドごとのウェイトにはなるので注意してください。
以上が、質問の回答になるかと思います。
(きっちり調べて書いてないので、間違ってる記述等がありましたら、どなたか修正お願いします)
Re: キャラクターの移動に関する仕様について
ecf5DTTzl6h6lJj02 様
とても丁寧で分かりやすいご返答ありがとうございます。
ご返答を基に自作ゲームで移動速度や移動にかかる時間(F)を検証してみたところ、
ほぼ理論値通りの結果を得られました。
これでよりゲーム制作が捗ります。
重ねて申し上げますが、ありがとうございました。
とても丁寧で分かりやすいご返答ありがとうございます。
ご返答を基に自作ゲームで移動速度や移動にかかる時間(F)を検証してみたところ、
ほぼ理論値通りの結果を得られました。
これでよりゲーム制作が捗ります。
重ねて申し上げますが、ありがとうございました。