私は、敵のアグロ検出のための円形の検出領域をコードするのに苦労しています。現在、プレイヤーのxとyの位置が、敵のxとyの位置プラスとマイナスのaggroDistに衝突すると、敵は引き出されます。ここ円形敵アグロ状態? (純粋なJSの2Dゲーム)
は、現在のコードである。このアプローチに
if (player.x > enemies[e].x -enemies[e].aggroDist &&
player.x < enemies[e].x +enemies[e].aggroDist &&
player.y > enemies[e].y -enemies[e].aggroDist &&
player.y < enemies[e].y +enemies[e].aggroDist) {
enemies[e].isAggro = true;
console.log(enemies[e].isAggro);
}
問題敵が対角線エッジに遠い距離にプレイヤーを検出することができることを意味し、正方形状の検出領域です。
私はenemies[e].x + (enemies[e].aggroDist * Math.PI)
のようなものを使用して円形の検知エリアを作ってみましたが、私は(このアプローチはあまりにも間違っているかもしれないので)それを実装する方法は考えています。
どのように私は検出領域の中心とその境界の間のすべての距離を厳密に同じにすることができますか?ここで
あなたは赤い点が円の内側にあるかどうかを知りたいですか? –
['Math.hypot(dx、dy)'](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/hypot)( "ピタゴラス定理"を検索するか、 "distance formula") – qxz
各エンティティの中心点からの距離を "aggroDist"として使用できますか? http://www.purplemath.com/modules/distform.htm –