1

多重化に問題があるように見えるHTML5キャンバス用のJavaScriptのパスファインディングスクリプトがあります。

jsFiddleデモ

スクリプトは、ここで受け入れられているSOの回答から少し変更されています。A* HTML5 Canvasでパスファインディングを開始します(これにも同じバグがあります)。

問題を再現する方法:赤い正方形が動いている間に地図の周りをすばやくクリックするだけで、正方形がさまざまなパスのそれぞれに分割または分岐しているように見えることがわかります。

何が起こっているのかと思います。分岐中に赤い四角がちらつき始めるので、実際には同じ四角が同時に複数の場所に配置しようとしているため、同じ四角が前後に「テレポート」します。交互フレームのフレームレート。これは単なる理論ですが、実際にはもっと多くの正方形を生み出しているとは思いません。

movePlayer()関数と関係があるのか​​、関数と関係があるのか​​わかりませんpathFinding()。私がする必要があるのは、オブジェクトが移動していてターゲットタイルが更新された場合、それらを同時に実行し続けるのではなく、以前の操作をキャンセルすることだと思います-しかし、これをどのように行うかはわかりません。

これは最終的には敵のAIスクリプトになるため、プレーヤーがマップ内を移動すると、ターゲットタイルが常にリアルタイムで更新され、この問題が表面化する可能性があります。

ありがとう、そして私はこれをデバッグするのに助けてくれてありがとう!

4

1 に答える 1

1

私の知る限り、問題は使用されているタイマーにあります。クリックすると、現在の場所とクリックした場所の間のパスが計算され、タイマーが開始されて正方形がそのパスに沿って移動し、そのタイマーの情報がローカルに保存されます。もう一度クリックすると、古いタイマーをクリアせずに別のタイマーが開始されるため、2つの異なるタイマーから同時に2つのパスに沿って移動しています。各タイマーのすべての動きを引き出しており、これはちらつきとして見ることができます。

于 2013-01-08T01:38:32.530 に答える