JAVA开发是男人就坚持10秒_炮弹和小人碰撞检测

      我们的游戏逻辑是:“飞机碰到炮弹,则死亡”。也就是说,我们需要检测:“飞机和所有的炮弹是否碰撞”。如果有50个炮弹对象,则进行50次比对检测即可。

      我们修改MyGameFrame类的paint()方法,如示例13-21所示。

MyGameFrame类:增加碰撞检测

public void paint(Graphics g) {  
        g.drawImage(bgImg, 0, 0, null);
         
        plane.drawMySelf(g);    //画出飞机本身
         
        //画出容器中所有的子弹
        for(int i=0;i<shellList.size();i++){
            Shell b =  shellList.get(i);
            b.draw(g);
             
            //飞机和所有炮弹对象进行矩形检测
            boolean peng = b.getRect().intersects(plane.getRect());
            if(peng){
                plane.live = false;   //飞机死掉,画面不显示
            }
        }
    }

      上面逻辑要求:plane.live=false时,飞机消失。所以,我们也需要修改Plane的代码。

Plane类:根据飞机状态判断飞机是否消失

public void drawMySelf(Graphics g) {
    if(live){
    super.drawMySelf(g);
    //根据方向,计算飞机新的坐标
    if(left){
        x -= speed;
    }
    if(right){
        x += speed;
    }
    if(up){
        y -= speed;
    }
    if(down){
        y += speed;
    }
    }
}

      这样,运行程序时,发生炮弹和飞机的碰撞,飞机消失,结果如图所示:

发生碰撞后的运行效果图:

发布了127 篇原创文章 · 获赞 7 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/ZGL_cyy/article/details/104157565
今日推荐