问题: 飞机和炮弹的矩形碰撞,显示飞机确实发生碰撞了,但是飞机没有消失
情况: 因为使用Frame ,画面是不动的状态,所以依旧使用了JFrame,并添加了双缓冲的代码
1.碰撞检测的代码
public Rectangle getreRect() {//用于做碰撞检测
return new Rectangle((int)x, (int)y, width, height);
}
2.炮弹填充和判断炮弹和飞机的碰撞
//初始化50个炮弹 加载窗口的时候就初始化50个炮弹
for(int i=0;i<shells.length;i++) {
shells[i] = new Shell();
//飛機和炮彈的碰撞檢測
boolean peng = shells[i].getreRect().intersects(plane.getreRect());//判斷炮彈的矩形和飛機的矩形是否相交
if (peng) {
plane.live = false;//改變飛機狀態
}
}
3.飞机的碰撞判断
boolean live = true;//判断飞机的状态,true表示活著
@Override
public void drawSelf(Graphics g) {
if (live) {//如果飞机活着
g.drawImage(img, (int)x, (int)y, null);
if (left) {
x -= speed;
}
if (right) {
x += speed;
}
if (up) {
y -= speed;
}
if (down) {
y += speed;
}else {
System.out.println("飛機碰撞了");
}
}
4.运行效果图:
