一、碰撞检测
解题思路:可以通过比较两个对象间的距离和两个对象半径和的大小。如果它们之间的距离小于半径之和,就说明产生了碰撞。
为了得到半径,可以取高度或者宽度的一半作为半径的值。
解析图如下:
代码如下:
public boolean isColliding(int ax, int ay, int aw, int ah, int bx, int by, int bw, int bh) {
int ar = aw / 2, br = bw / 2;// 两个圆的半径
int acx = ax + ar, acy = ay + ar;// 圆形a的圆心坐标
int bcx = bx + br, bcy = by + br;// 圆形b的圆心坐标
// 求圆心距
double length = Math.sqrt(Math.pow(acx - bcx, 2) + Math.pow(acy - bcy, 2));
// 判断圆心距与两圆半径和的关系并返回,true代表两圆发生碰撞
return length < (ar + br);
}