【ARPG-PluginSet】向き固定慣性の不具合対応

RPGツクール

向き固定で慣性が狂う問題を回避するプラグインを作成しました。
こちらからダウンロードできます。(右クリックからダウンロードでよろしく)

「カニ歩き+剣振り」で判明したARPG_PluginSetの不具合の対策になります。向きを固定した状態では慣性が現在方向に発生します。後退してキーを離すと慣性が前方に発生。タップしての移動では発生しないので、不具合と判断しています。

「DotMoveSystem_FunctionEx」の後にプラグインを追加し、プラグインパラメータ「適用スイッチID」をONにすることで現象が回避できます。

適用スイッチIDには「カニ歩き中であるかどうか」を持つスイッチを指定することを推奨します。副作用を懸念し、状況を限定して適用するようにしています。

※プラグインの適用によって生じた損害について、作者は一切責任を負いません。

アイテム掲げ剣ビーム盾ガードドロップアイテム斜め方向の弾を作ってきました。神トラをイメージしての壺投げもありますので、是非過去記事も見てみてください。

以降、問題点と解決方法、苦労話が続きます。ご参考までに。

●向き固定の慣性問題

ARPG-PluginSetでは移動キーが離された後も慣性で動きます。この状況では既にキーが離されているため方向が存在しません。現行バージョンでは「現在方向」を取ってくるため、慣性方向が狂うようです。向き固定中では問題が発生します。

タップ/クリックによる移動は目的地から方向を求めている?ようなので発生しないようです。

今回の解決策が正しいかはともかく、恐らく不具合だと思います。

●解決方法

慣性は「DotMoveSystem_FunctionEx.js」の「inertiaMoveProcess」で実施しています。「dotMoveByDirection」に渡しているのは現在方向となる「this.direction()」。ここを「this.mover()._lastDirection」にすることで解決しました。

慣性なので目的地から方向を求められそうです。が、「_lastDirection」で目的は達成できそうなのでソコまで調査を進めていません。そっちの方が完璧かもですが、既に戦意を失いかけていたので留まりました。

●苦労話

現象からして「慣性」とアタリを付けられたので、スクリプトはすぐ見つかりました。しかし、1スクリプトでも流れが掴みにくくパニックになってました。

方向設定がキモなのは分かっていましたが、それっぽい所を変えても改善せず。最終キー入力を覚えておきたいけど色んな所で方向が更新されててパニック。大元で覚えておきたいけどキー入力直後はどこが呼ばれるか分からない。大元っぽいsetDirectionをいじるも改善せず、で大変でした。ほんと修行が足んねー。

初心に戻り、キーワード「慣性」から見直し。
慣性→setInertia→_inertia→inertiaMoveProcess→dotMoveByDirectionと進み、this.direction()をthis.mover()._lastDirectionに変更してみると改善。裏付けで関連場所を調査して問題なさそうな事を確認してプラグイン化しました。前半は_lastDirectionを見つけるまでの布石ということで、全てに意味がありましたね。

プロトタイプベースなので「今どこ見てたっけ?」となって迷子になったりもしました。
プロトタイプベースは影響範囲を小さくできるのでプラグインとは相性が良さそう。JavaScriptは昔から使ってるけどprototypeは見ないようにしてました。いいかげん、これを機に慣れるか。

●まとめ

今回は「向き固定慣性」の不具合を対策しました。
「DotMoveSystem_FunctionEx.js」を調査し、慣性の移動方向が最終方向ではなく現在方向となっていることを確認。「向き固定中」かつ「適用スイッチON」の時のみ最終方向とするプラグインを作成しました。

「常に最終方向にする」という対応でも動きそうでしたが、副作用を考慮して状況を限定しています。

自分には扱いづらいけど、やっぱりARPG_PluginSetはすごいと再認識。
移動はイベントだけでなくパーティの隊列歩行や乗り物にも影響しているようです。かつ汎用的にも作られているため、スクリプトが長くなるのも当然ですね。ここだけ全体を考えて設計するとか、一通りrmmz_***系のスクリプトを把握してるってことですかね。おみそれしました。

僕はほどほどに頑張ります。

コメント

タイトルとURLをコピーしました