快速业务通道

创建Eclipse游戏插件,第2部分: 构建和发射BB枪 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-19
lode 方法创建两个方块,代表爆炸的虫子,同时调用 bug 方法,仍然显示虫子。disappear 方法创建一个空列表,从根本上清除虫子。然后,让 SceneGrip 类挂接到这个新的爆炸和消失功能。

创建Eclipse游戏插件,第2部分: 构建和发射BB枪(14)

时间:2011-02-10 IBM Tyler Anderson

创建到爆炸虫子的公共钩子

有了显示和清除爆炸虫子的能力,需要允许 SceneGrip 类利用这个能力。请在 GameScene 类中定义两个方法,如清单 21 所示。

清单 21. explodeBug 和 disappearBug 方法

public void explodeBug(int b){      bugs[b].explode();    }    public void disappearBug(int b){      bugs[b].disappear();    }

我们捕获了来自 OpenGL 窗口的键盘事件,然后调用这些函数。

修改键盘事件处理函数

现在已经有了爆炸和清除虫子的方法,所以需要在 SceneGrip 类中添加两个 case 语句,如清单 22 所示。

清单 22. 爆炸和清除虫子

...      case SWT.HOME:         this.init();        break;      case 101: // e       game.explodeBug(0);       break;      case 100: // d       game.disappearBug(0);       break; ...

现在,在按下 e 或 d 按钮时,第一个虫子将爆炸或消失。请看看爆炸的虫子,如图 8 所示。

图 8. 爆炸的虫子

创建Eclipse游戏插件,第2部分: 构建和发射BB枪(15)

时间:2011-02-10 IBM Tyler Anderson

制作 BB 射击动画

现在所有东西都配合得不错。最后一项任务是修改 bullet 类来实现动画。

修改构造函数

首先,需要让 bullet 对象开始时不出现,然后添加一些新变量。请修改 bullet 类,如清单 23 所示。

清单 23. 修改 bullet 类

private boolean fired;      private Timer t;      private TimerTask tt;      private float translation;      public Bullet() {        fired = false;        t = new Timer();        translation = 0;        GL.glNewList(this.getListIndex(), GL.GL_COMPILE);        GL.glEndList();      }

布尔变量 fired 指定 BB 弹当前是否进行动画处理。Timer 和 TimerTask 对象用作 BB 弹发射时更新 BB 弹位置的计时器。translation 变量指定 BB 弹已经走过的距离。下面,创建 shoot 方法。

发射 BB 弹

有了几个新变量后,需要创建一个方法来初始化 BB 弹的射击。请定义做这个工作的 shoot 方法,如清单 24 所示。

清单 24. shoot 方法

public void shoot(){        fired = true;        translation = 0;        GL.glNewList(this.getListIndex(), GL.GL_COMPILE);          GL.glColor4fv(WHITE);          GL.glBegin(GL.GL_QUADS);            GLU.gluCylinder(Bullet.QUADRIC,                    RADIUS, RADIUS, LENGTH, 32, 1);            GLU.gluDisk(Bullet.QUADRIC, 0.0, RADIUS, 32, 32);            GL.glTranslatef(0.0f, 0.0f, LENGTH);            GLU.gluDisk(Bullet.QUADRIC, 0.0, RADIUS, 32, 32);            GL.glTranslatef(0.0f, 0.0f, -LENGTH);          GL.glEnd();        GL.glEndList(); ...

这个方法只是绘制 BB 弹,像前面一样,并把布尔变量 fired 设置为 true,translation 设置为 0。下面,将了解如何使用 Timer 对象进行动画处理。

创建Eclipse游戏插件,第2部分: 构建和发射BB枪(16)

时间:201

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号