假设我们有一个固定的AABB和一个可移动的AABB,且前者在坐标系的中心。我们要计算一个向中心移动的可移动AABB与固定AABB之间是否会发生碰撞。若发生碰撞,则我们需要计算出每个AABB相对于彼此的距离来移动它们以避免发生碰撞。
算法如下所示:
下面是在JavaScript中实现这个算法的示例代码:
function checkCollision(centerAABB, moveAABB) { var vDistance = Math.abs(centerAABB.y - moveAABB.y); var hDistance = Math.abs(centerAABB.x - moveAABB.x); var xOverlap = (centerAABB.width / 2) + (moveAABB.width / 2) - hDistance; var yOverlap = (centerAABB.height / 2) + (moveAABB.height / 2) - vDistance; if (xOverlap >= 0 && yOverlap >= 0) { var moveX = moveAABB.x - centerAABB.x; var moveY = moveAABB.y - centerAABB.y; if (xOverlap < yOverlap) { moveX *= -1; } else { moveY *= -1; } moveAABB