若想实现物理碰撞,两圆相交是一个最简单的碰撞方式,但是要注意的是他的精度是不高的。而其实现的原理也很简单,就是利用两点间的距离公式,判断是否小于这个距离即为相交,下面看代码实现。
public void pDetection() {
double r1 =back.getHeroimage()[0].getWidth(null)/2.0;//获取图片1的半径
double r2 = back.getHeroimage()[6].getWidth(null)/2.0;//图片2半径
double r3 = r1 + r2;//半径和
double x1 = back.getHerox()+r1-10;//中点坐标(-10是为了提高精度)
double y1 = back.getHeroy()+r1;//中点坐标
double x2 = 160+r2;
double y2 = 360+r2;
double r12 = Math.sqrt(((x1-x2)*(x1-x2))+((y1-y2)*(y1-y2)));//两点间距离公式
//System.out.println(r1+" "+r2);
System.out.println(r12 +" "+r3);
if( r12-10 < r3) {
System.out.println("碰到了,距离为:"+(r12-10));
}
}
效果如下
可以看到精度其实是不太高的。