おい、コメンテーターの何人かは、質問者にもう少し余裕を持たせる必要がある。多くの人にとって、これが直角三角形に関する問題に分解できることは必ずしも明らかではありません。
Marjin の答えは正しいですが、実際にはさらに一歩進んで、はるかに効率的になり、最終的にゲームの全体的なパフォーマンスを向上させることができます。
Math.sqrt(Math.pow((x1 - x2), 2) + Math.pow((y1 - y2), 2));
x1,y1 と x2,y2 の間の距離が得られますが、実際には平方根の部分を実行する必要はありません。
ほら、距離が何であるかはあまり気にしません。別の距離よりも多いか少ないかだけを気にします。したがって、常に 2 つの距離を比較することになります。この場合、上記の式からの距離を 200 と比較することになります。距離を比較しているので、代わりに 200 を 2 乗することができます。
Math.pow(200, 2)
距離の二乗を取得します。次に、平方根なしで上記の式を使用できます。
Math.pow((x1 - x2), 2) + Math.pow((y1 - y2), 2);
数式を 200 ではなく 40000 と比較します。これの利点は、Math.pow
200 を 1 回呼び出すだけでよく、その代わりにこれまで呼び出す必要がないことMath.sqrt
です。1 秒間に何度も多くのクリープをチェックすることになるため、これらの呼び出しが合計され、距離の代わりに距離の 2 乗を比較している場合、ゲームのパフォーマンスが向上するはずです。
以下は、目的に合わせてそれらを使用する方法がほとんど同じであることを示すコード例です。を使用しておりconsole.log
、その見方がわからない場合は、このチュートリアルの最初の 2 つの部分のビジュアルを参照してください。
コードは次のとおりです。
http://jsfiddle.net/4aPjB/