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

标签 javascript html

我正在开发一款 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/

最佳答案

这是非常基础的数学。

检查 (x1 - x0)2 + (y1 - y 0)2 < r2

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)) { 
    ...
}

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

关于javascript - 为玩家检查敌人周围的圆形区域,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10724776/

相关文章:

javascript - 沿固定 Angular 圆形路径移动 div

javascript - 显示 javascript 结果,这是输入标签内日期之间差异的结果

javascript - 选中时更改标签颜色单选

javascript - 是否有像 c# 那样的 javascript api?

Javascript 三元使用评估结果

jquery 不知道选择了什么选项

javascript - Shadow DOM,使用目的

javascript - 避免第二次 ajax 调用的好方法

javascript - 如何动态调整自定义 CSS 属性?

javascript - 在两个 ul 中包装/拆分列表项