我正在构建一款JavaScript砖块以打破游戏乐趣。演示可以播放here。但是,您会看到所有冲突都没有处理。在砖头破碎游戏中找到最接近砖头的砖块
在试图通过直接计算来处理碰撞(而不是遍历整个砖块阵列)时,我需要在每个刻度处找到距离我球最近的砖块,以便比较它的边界和我的球的边界并找出是否有碰撞。
我有一个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))
我建议你see the code in its context清楚地了解什么,我试图做的。 (我承诺我的试验和调试的东西让你看,也许比我更了解我的问题,这些混乱发生在第208行和第246行之间)。
其实这两个Math.floor
都很奇怪(因为我没有正确使用它们)。它通常会找到比实际最近的砖块向上或向下的值1,这导致了像bricksArray[1][-1]
这样的东西当然不存在并且会抛出错误。或者bricksArray[1][2]
,当最近的砖块实际上是[1][1]
,这不是很好,因为我生气了。
那么,我怎样才能找到最接近我的球的砖?(希望这是做的最好的方式)
另外:我的球,目前在只有4方向移动,因为_ballDirX
和_ballDirY
只能采取1
或-1
。我知道三角形圈的东西,但然后我想知道如果碰撞仍然是“那么简单”...