Android游戏开发---关于实体的绘制与跟踪技术
2014-03-08 12:52
267 查看
Android游戏开发中,特别是飞行射击类游戏经常出现子弹的跟踪功能。贴一段代码。
待完善。
转自:http://blog.csdn.net/xn4545945/article/details/8744231
public class Enemy { private int x, y; private Bitmap ePlayer; private boolean flag = true;//标记是否有效. 被击中后变为无效的. private int dx, dy; //飞机的偏移量 private int pWidth, pHeight; private GameView gameView; private EnemyBullet enemyBullet; //getter and setter public boolean isFlag() { return flag; } public void setFlag(boolean flag) { this.flag = flag; } public Enemy(View view) { gameView = (GameView) view; pWidth = view.getWidth(); pHeight = view.getHeight(); x = new Random().nextInt(pWidth); //敌机出现的位置0-320(屏幕宽度) y = new Random().nextInt(50) - 50; //上移50像素, 有高有低的慢慢出来 dy = new Random().nextInt(10) + 1;//1-10, 至少得动吧 ePlayer = BitmapFactory.decodeResource(view.getResources(), R.drawable.e6); } public void drawSelf(Canvas canvas) { if (flag) //敌机管理里面已经检测了 canvas.drawBitmap(ePlayer, x, y, null); } public void enemyCheckCrash() { //遍历所有子弹 for (PlayerBullet playerBullet : PlayerBulletManager .getAllPlayerBullet()) { //如果敌机和玩家子弹都是有效的, 且发生碰撞 if (this.flag == true && playerBullet.isFlag() == true && CheckCrash .ifCrash( x, y, x + ePlayer.getWidth(), y + ePlayer.getHeight(), playerBullet.getX(), playerBullet.getY(), playerBullet.getX() + playerBullet.getBulletWidth(), playerBullet.getY() + playerBullet.getBulletHeight())) ; { //打到后敌机消失, 玩家子弹消失 this.flag = false; playerBullet.setFlag(false); System.out .println(x + " " + y + " " + (x + ePlayer.getWidth()) + " " + (y + ePlayer.getHeight()) + " " + playerBullet.getX() + " " + playerBullet.getY() + " " + (playerBullet.getX() + playerBullet .getBulletWidth()) + " " + (playerBullet.getY() + playerBullet .getBulletHeight())); } } } /** * 敌机移动是随机的. 包括出现也是随机的. */ public void move() { //将偏移量的设置放到这里, 让飞机每次生成时的偏移的变化的 int px = gameView.getPlayerManager().getPlayer().getX(); //跟踪功能, 即设置dx增量 if (px < x) //玩家的位置在左边 dx = new Random().nextInt(3) - 3;//-3~-1 else if (px > x)//玩家的位置在右边 dx = new Random().nextInt(3) + 1; //1~3 else //正对着 dx = 0; //敌机慢慢移动 x += dx; y += dy; //敌机出屏幕后, 再重新回到上面去. 敌机中子弹了也要回到上面去 if (x < -1 * ePlayer.getWidth() || x > pWidth || y > pHeight) //|| this.flag == false) { x = new Random().nextInt(pWidth);//敌机出现的位置0-320(屏幕宽度) y = new Random().nextInt(50) - 50; //上移50像素, 有高有低的慢慢出来 //this.flag = true; //飞机又重新有效 } } /** * 敌机发射子弹 */ public void fire() { enemyBullet = gameView.getEnemyBulletManager().getOneBullet(); //设置子弹的位置. //x = 敌机当前x + 敌机宽度/2 - 子弹宽度/2 //y = 敌机当前y + 飞机高度 (子弹高度 这里就不计算了) enemyBullet.setPosition( x + ePlayer.getWidth() / 2 - enemyBullet.getEnemyBulletWidth() / 2, y + ePlayer.getHeight()); enemyBullet.setDy(dy + 3);//保证子弹比飞机快, 设置敌机子弹的移动增量 } }
待完善。
转自:http://blog.csdn.net/xn4545945/article/details/8744231
相关文章推荐
- Android游戏开发---关于实体的绘制与跟踪技术
- 【Android游戏开发十七】让玩家自定义手势玩转Android游戏!—Android Gesture之【输入法手势技术】
- 【Android游戏开发十五】关于Android 游戏开发中 OnTouchEvent() 触屏事件的性能优化笔记!
- (转)Android游戏开发之绘制游戏主菜单与进度条加载进度(十三)
- android游戏开发初学之SurfaceView绘制界面
- 15—关于Android 游戏开发中 OnTouchEvent() 触屏事件的性能优化笔记
- Android 3D游戏开发技术详解与典型案例pdf
- 【转】【Android游戏开发十五】关于Android 游戏开发中 OnTouchEvent() 触屏事件的性能优化笔记!
- 【Android开发】图形图像处理技术-绘制几何图形
- 【Android游戏开发十五】关于Android 游戏开发中 OnTouchEvent() 触屏事件的性能优化笔记!
- android游戏开发系列(2)——背景音乐播放技术
- android游戏开发 深度解析利用位图绘制rpg地图
- 【Android游戏开发十七】让玩家自定义手势玩转Android游戏!—Android Gesture之【输入法手势技术】
- Android 3D游戏开发技术宝典pdf
- 【Android游戏开发十五】关于Android 游戏开发中 OnTouchEvent() 触屏事件的优化笔记!
- Android游戏开发之绘制游戏主菜单与进度条加载进度(六)
- 【Android游戏开发十七】让玩家自定义手势玩转Android游戏!—Android Gesture之【输入法手势技术】
- 【Android游戏开发十五】关于Android 游戏开发中 OnTouchEvent() 触屏事件的性能优化笔记!
- Android游戏开发25:Android中贝塞尔曲线的绘制方法
- Android游戏开发--双缓冲技术