/* b | b | b * | | * --------------------+----------------+-------------- * * b | a | b * | | * --------------------+----------------+-------------- * | | * b | b | b * */ /** * 矩形检测碰撞(标准平面坐标) * @param aLeftTopX 左上角x坐标值 -- 矩形1 * @param aLeftTopY 左上角y坐杯值 * @param aRightBottomX 右下角x坐标值 * @param aRightBottomY 右下角y坐标值 * @param bLeftTopX 左上角x坐标值 -- 矩形2 * @param bLeftTopY 左上角y坐标值 * @param bRightBottomX 右下角x坐标值 * @param bRightBottomY 右下角y坐标值 * @return 是否碰撞 */ public static boolean intersectRect(int aLeftTopX, int aLeftTopY, int aRightBottomX, int aRightBottomY, int bLeftTopX, int bLeftTopY, int bRightBottomX, int bRightBottomY) { /* * bLeftTopX >= aRightBottomX -> b在a的右边 * bLeftTopY >= aRightBottomY -> b在a的下面 * bRightBottomX <= aLeftTopX -> b在a的左边 * bRightBottomY <= aLeftTopY -> b在a的上面 */ if (bLeftTopX >= aRightBottomX || bLeftTopY >= aRightBottomY || bRightBottomX <= aLeftTopX || bRightBottomY <= aLeftTopY) { return false; } else { return true; } } /** * 矩形检测碰撞(标准平面坐标) * @param aLeftTopX 左上角x坐标值 --矩形1 * @param aLeftTopY 左上角y坐标值 * @param aWidth 宽 * @param aHeight 高 * @param bLeftTopX 左上角x坐标值 --矩形2 * @param bLeftTopY 左上角y坐标值 * @param bWidth 宽 * @param bHeight 高 * @return 是否碰撞 */ public static final boolean isIntersectingRect(int aLeftTopX, int aLeftTopY, int aWidth, int aHeight, int bLeftTopX, int bLeftTopY, int bWidth, int bHeight) { /** * bLeftTopX > aLeftTopX + aWidth b在a的右边 * bLeftTopY > aLeftTopY + aHeght b在a的下面 * bLeftTopX + bWidth < aLeftTopX b在a的左边 * bLeftTopX + bHeight < aLeftTopY b在a的上面 */ if (bLeftTopX > aLeftTopX + aWidth || bLeftTopY > aLeftTopY + aHeight || bLeftTopX + bWidth < aLeftTopX || bLeftTopY + bHeight < aLeftTopY) { return false; } else { return true; } }