检查敌人周围的圆形区域为玩家

时间:2012-05-23 17:14:53

标签: javascript html5

我正在开发一款HTML5游戏并且我认为这是一个数学问题。玩家和敌人对象的pos.x和pos.y值表示他们在屏幕上的位置。我已经为一些敌人实施了接近检查代码,我并不完全满意。目前敌人正在检查玩家是否在距离它一定距离,在x和y轴上是200或-200。这意味着该实体正在扫描自身周围的400x400方块。

我想把它变成半径为200的圆圈。我现在的代码。

if ((player.pos.x - enemy.pos.x > 200 && player.pos.x - enemy.pos.x < 200) 
  && (player.pos.y - enemy.pos.y > 200 && player.pos.y - enemy.pos.y < 200)) {
    //Do something...
}

如果你想查看它,这是我的游戏。邻近的敌人是第二级,目前是最后一级:)

http://project.dnsalias.com/

2 个答案:

答案 0 :(得分:3)

这是非常基础的数学。

检查(x 1 - x 0 2 +(y 1 - y 0 2 &lt; [R 2

function inRange(p0, p1, r) {
   r = r || 200;
   var dx = p0.x - p1.x;
   var dy = p0.y - p1.y;

   return (dx * dx + dy * dy) < (r * r);
}

这样称呼:

if (inRange(player.pos, enemy.pos)) { 
    ...
}

您可以提供第三个可选参数来更改检测半径。

答案 1 :(得分:1)

也许您可以使用欧几里德距离函数代替?它会像(player.pos.x - enemy.pos.x)x(player.pos.x - enemy.pos.x)+(player.pos.y - enemy.pos.y)x(播放器。 pos.y - enemy.pos.y)= 200 x 200.抱歉,我不知道平方根和平方函数的语法。