我正在構建一款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
。我知道三角形圈的東西,但然後我想知道如果碰撞仍然是「那麼簡單」...