我正在从头开始构建一个 JavaScript 砖块破坏游戏,以获得乐趣。可以在这里播放演示。但是,您会看到所有冲突都没有得到处理。
为了尝试通过直接计算(而不是遍历整个砖块阵列)来处理碰撞,我需要在每个滴答声中找到离我的球最近的砖块,这样我就可以比较它的边界和我的球的边界,看看是否有是一次碰撞。
我有一个 2D bricksArray
,我这样做是为了找到最近的砖:
var col = Math.floor((_ballX + _ballDirX * Breakoid.BALL_SIZE) / (_brickWidth + Breakoid.EMPTY_SPACE))
var row = Math.floor((_ballY + _ballDirY * Breakoid.BALL_SIZE) / (Breakoid.BRICK_HEIGHT + Breakoid.EMPTY_SPACE))
我建议您在其上下文中查看代码,以清楚地了解我要做什么。(我提交了我的试验和调试的东西让你看到,也许比我更能理解我的问题。混乱发生在第 208 行和第 246 行之间)。
实际上,这两个Math.floor
很奇怪(因为我没有正确使用它们)。它通常会找到比实际最近的砖高 1 或低 1 的值,这会导致诸如此类的事情bricksArray[1][-1]
当然不存在并引发错误。或者bricksArray[1][2]
当最近的砖实际上是[1][1]
,这对他们来说不是很好,因为我生气了。
那么,我怎样才能找到离我的球最近的砖呢?(希望这是最好的方法)
另外:我的球目前只能向 4 个方向移动,_ballDirX
并且_ballDirY
只能采用1
或-1
。我知道三角圆的东西,但我想知道碰撞是否仍然会“那么简单”......