ページ 1 / 1
【解決済】自律移動の速度が3未満のイベントの実行内容が移動ルートの設定の時、実行が遅れる
Posted: 2025年2月17日(月) 16:50
by お茶子
以下のイベント内容の実行が遅れます。
【自律移動】
タイプ:ランダム
移動速度:1
移動頻度:5
【プライオリティ】
通常キャラと同じ
【トリガー】
プレイヤーから接触
【実行内容】
移動ルートの設定
ーーーーーーーーーーーーーーーーーーーーー
イベント内容の実行が遅れるというのは、例えばプレイヤーが接触してもイベントは1歩〜3歩(その都度違う)自律移動をし終えてから実行内容の移動ルートが実行されるという感じです。
まれに接触した瞬間すぐに実行されることもありますが基本遅れます。
原因はどうやら移動速度が3未満なことみたいです。
速度を3にしたら何度試しても遅れることはありませんでした。
しかし移動頻度をMAXの5にしたいので、そのぶん速度は1か2にしたいんです。
実行内容の移動ルートの設定の中身に関しては、移動コマンドであろうがジャンプであろうが何を設定しても遅れるようです。
イベントの実行内容の1番最初に移動速度変更を入れて移動速度を早めてみても、自律移動が3未満である限り意味がないようでした。
何か解決策はありますでしょうか?それとも仕様的な物てどうしようもないことてしょうか。
Re: 自律移動の速度が3未満のイベントの実行内容が移動ルートの設定の時、実行が遅れる
Posted: 2025年2月17日(月) 19:24
by お茶子
現象を再現したプロジェクトです。
ツクール本体とコアスクリプトは本日配信された最新バージョンでも前のバージョンでもどちらでも現象は起こります。
https://xfs.jp/4sPrnN3Y
Re: 自律移動の速度が3未満のイベントの実行内容が移動ルートの設定の時、実行が遅れる
Posted: 2025年2月18日(火) 19:54
by 名無し蛙
ツクラー目線だと違和感がない挙動ですが言わんとする事は分かります。
先に結論を言えば仕様です。
ツクールMZでは基本的に48*48のマス単位でマップ上のオブジェクトが挙動します。
移動速度1のイベントは2^1/256 の速度、つまり128フレーム(2秒強)で1マスを移動する為
移動開始直後に接触すれば最長で次のマスへ移動完了するまでの約2秒の遅延が発生するはずです。
歩行パターンは(9 - 1) * 3、つまり24フレーム毎で足が動きますけどそれはゲーム上の挙動とは関係ありません。
移動速度3も動作条件は同じですが目立たない速さに落ち着いただけでしょう。
探せばもしかしたら解消するプラグインもあるかもしれませんが
どの道大規模な改修不可避でどのような副作用が出るかも分からないので割り切った方が良いと思いますね。
Re: 自律移動の速度が3未満のイベントの実行内容が移動ルートの設定の時、実行が遅れる
Posted: 2025年2月18日(火) 20:30
by お茶子
回答ありがとうございます。
やはりそういう仕様なのですね…
車に乗ったプレイヤーがイベントにぶつかったらイベントが即吹っ飛ぶという演出をしたいので遅延をなくしたかったのですが、別の演出方法を考えるか歩行頻度を下げて歩行速度を3以上にするかで妥協する方向で考えます( ; _ ; )
Re: 自律移動の速度が3未満のイベントの実行内容が移動ルートの設定の時、実行が遅れる
Posted: 2025年2月18日(火) 21:56
by 名無し蛙
お茶子 さんが書きました:車に乗ったプレイヤーがイベントにぶつかったらイベントが即吹っ飛ぶという演出をしたいので遅延をなくしたかったのですが、別の演出方法を考えるか歩行頻度を下げて歩行速度を3以上にするかで妥協する方向で考えます( ; _ ; )
ああ…そういう話なら対策がある事を思い出しました。
イベントの一番最初にコマンド>スクリプトから以下のコードを使用してください。
コード: 全て選択
const c = this.character(0);
c.setPosition(c.x, c.y);
これは「当該イベントを当該イベントの場所に再設定する」というコードです。
これを使用する事で移動先に即座にワープして移動処理に移る事が出来ます。
Re: 自律移動の速度が3未満のイベントの実行内容が移動ルートの設定の時、実行が遅れる
Posted: 2025年2月18日(火) 22:55
by お茶子
名無し蛙 さんが書きました:
ああ…そういう話なら対策がある事を思い出しました。
イベントの一番最初にコマンド>スクリプトから以下のコードを使用してください。
コード: 全て選択
const c = this.character(0);
c.setPosition(c.x, c.y);
これは「当該イベントを当該イベントの場所に再設定する」というコードです。
これを使用する事で移動先に即座にワープして移動処理に移る事が出来ます。
教えて下さったスクリプトを使ったら完全に理想の動きになりました!
名無し蛙さんありがとうございます!