Javascript Canvas 碰撞检测问题

标签 javascript html5-canvas

我已经被这个问题困扰了一段时间,我希望得到一些帮助。基本上情况就是这样。我有多个正方形(100 x 100)在 Canvas 上向上移动,一段时间后再次重置到底部。我还有一个可左右移动的可控立方体(20 x 20)。游戏的目标是躲避立方体,直到达到一定的时间限制。但我一生都无法获得“宇宙飞船”和方 block 工作的碰撞检测。有人有什么想法吗?这是我的一些代码,在这方面已经取得了一定的成功(只有“宇宙飞船”的左侧击中了其他立方体寄存器)。

for(var n = 0; n < block.length; n++){
if(y > block[n].y && y < (block[n].y + 100 )){
    console.log(y + 100 + " " +  "y check1");
    if(x > block[n].x && x < block[n].x + 100){
        x += 20;
        console.log(x + 100 + " " +  "x check1");
     }
  }
}

注意:xy = 船舶的位置, block.yblock.x = 连续循环检查的 block 的位置。

如果需要,我可以提供其余的代码。 谢谢!

最佳答案

这是一个基本的碰撞检测。有趣的是,它并不是真正寻找碰撞,而是寻找对象之间的间隙。没有间隙,就被击中了。

if (rect1.x < rect2.x + rect2.width &&
   rect1.x + rect1.width > rect2.x &&
   rect1.y < rect2.y + rect2.height &&
   rect1.height + rect1.y > rect2.y) {
// collision detected!
}

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

相关文章:

javascript - Chrome浏览器: Cannot launch python code visualizer

javascript - 我错误地将变量传递给函数,但没有看到我的错误

javascript - RAL 到 RGB/HEX 通过 javascript

html - Canvas 上的绘制是否基于现有内容进行了优化?

javascript - 未选择下拉菜单时更改 css

javascript - 滚动条到水平 div

javascript - 路由不重定向到静态文件

canvas - Fabric.js 橡皮擦问题 Canvas

javascript - HTML5/Javascript - 我的用户触发的 Canvas 动画断断续续

javascript - 从堆栈中删除 Canvas 矩形