需购买观看

全屏

13.5.2 炮弹和飞机碰撞检测


【专业IT培训机构,真正零首付入学www.bjsxt.com


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

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

【示例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的代码。

【示例13-22】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;
	}
    }
}

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

图13-13 发生碰撞后的运行效果图.png

图13-13 发生碰撞后的运行效果图

分类导航
点击按住视频可拖动

缩小

关闭

  • 正在学习
  • 北京总部地址:北京市海淀区西三旗街道建材城西路中腾建华商务大厦东侧二层尚学堂
  • 咨询电话:400-009-1906 010-56233821
  • Copyright 2007-2015 北京尚学堂科技有限公司
  • 京ICP备13018289号-1 京公网安备11010802015183