AABB碰撞检测的原理:
说起来有点绕,请看代码
function checkCollision(rect1, rect2) {
// 检查两个矩形是否在水平方向上重叠
const horizontalOverlap = rect1.left < rect2.right && rect2.left<rect1.right;
// 检查两个矩形是否在垂直方向上重叠
const verticalOverlap = rect1.top < rect2.bottom && rect2.top<rect1.bottom;
// 如果两个矩形在水平和垂直方向上都重叠,则发生碰撞
return horizontalOverlap && verticalOverlap;
}
优点:代码简单,运行效率高。
缺点:毕竟是矩形,有棱有角的,碰撞起来有点粗糙,不太适合不规则物体的碰撞检测。
所以Phaser3里有另外一个物理引擎MatterJS,它是OBB碰撞原理,能应对复杂的碰撞要求。