JavaScript:碰撞检测

标签 javascript collision-detection

JavaScript 中的碰撞检测是如何工作的?

我不会使用 jQuery 或 gameQuery - 已经在使用原型(prototype) - 所以,我正在寻找一些非常简单的东西。我不要求完整的解决方案,只是指出正确的方向。

假设有:

<div id="ball"></div>
and
<div id="someobject0"></div>

现在球在移动(任何方向)。 “Someobject”(0-X) 已经预先定义好,其中有 20-60 个随机放置,如下所示:

#someobject {position: absolute; top: RNDpx; left: RNDpx;}

我可以创建一个带有“someobject(X)”位置的数组,并在“球”移动时测试碰撞...类似:

for(var c=0; c<objposArray.length; c++){
........ and code to check ball's current position vs all objects one by one....
}

但我想这将是一个“菜鸟”解决方案,而且看起来很慢。 有没有更好的?

最佳答案

这是一个非常简单的边界矩形例程。它期望 ab 都是具有 xywidth 的对象和 height 属性:

function isCollide(a, b) {
    return !(
        ((a.y + a.height) < (b.y)) ||
        (a.y > (b.y + b.height)) ||
        ((a.x + a.width) < b.x) ||
        (a.x > (b.x + b.width))
    );
}

要查看此功能的实际效果,here's a codepen @MixerOID 亲切制作.

关于JavaScript:碰撞检测,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2440377/

相关文章:

javascript - 当 Promise 被拒绝时如何触发 React 错误边界?

javascript - 返回交点位置和大小

c++ - 矩形碰撞确定边

javascript - Dojo 无法通过 ID 获取元素

javascript - 将字符串传递给 jquery 对话框以成为按钮的名称

java - 碰撞检测教程

ios - Swift 3 Sprite 节点接触/碰撞行为不正常

javascript - 理论上,这个 For-Loop 应该工作吗?

java - 下面的代码中是否需要使用ajax?

javascript - 在 useState 钩子(Hook)回调中使用副作用可以吗?