我有一些LUA代码调用一个函数,如果玩家与矩形碰撞,则该函数返回true。我很确定数学是正确的,并且它确实在大多数情况下都能正常工作,但由于某种原因,如果没有碰撞,当玩家四处移动时,它会随机返回true。通常,当矩形靠近播放器但仍未触摸时会发生这种情况。奇怪的是它只是偶尔发生。
两个矩形碰撞的数学100%是否正确?请记住,player_x,player_y,rect_x,rect_y的来源都是居中的,因此在代码中反复出现“/ 2”。
function hasCollided(player_x, player_y, player_width, player_height, rect_x, rect_y, rect_width, rect_height)
if math.abs(rect_x - player_x) <= rect_width / 2 + player_width / 2 and math.abs(rect_y - player_y) <= rect_height / 2 + player_height / 2 then
return true
else
return false
end