快速业务通道

创建Eclipse游戏插件,第3部分: 启动游戏 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-19
uo;POW” 文本消失。

移动 BB 枪

每个游戏都允许玩家移动他控制的部件 —— 在这个示例中就是 BB 枪。在添加这个功能之前,需要为我们创建和初始化的每个对象创建 3 维坐标。这一节介绍这个功能,这个功能允许玩家四处移动枪。

添加正确的坐标:虫子

在这份教程后面,当添加碰撞检测时,需要知道游戏中每个部件的正确坐标。请把坐标添加到 Bug 类中,如清单 1 所示。

清单 1. 挂上虫子的坐标

...     private float ox, oy, oz;     public Bug(float[] color, float ox, float oy, float oz) {       this.ox = ox;       this.oy = oy;       this.oz = oz; ...

现在有了当前虫子的 x、y 和 z 坐标。需要重载 Bug 类的 draw 方法,如清单 2 所示。

清单 2. draw 方法

public void draw(){        GL.glTranslatef(ox, oy, oz);        super.draw();        GL.glTranslatef(-ox, -oy, -oz);      }

现在我们要把原点转到绘制虫子的位置,绘制虫子,然后换回原点。

添加正确的坐标:子弹

除了向 Bullet 类添加 3 维坐标之外,还必须添加其他一些东西。例如,为了避免每秒发射数百次,我们将限制枪的发射速率。请参阅清单 3。

清单 3. 添加新变量

...      private float ox, oy, oz;      private float translationGunX;      private float translationGunY;      private GameScene game;      private static long lastShotMilliseconds;      public Bullet(GameScene game, float ox, float oy, float oz) {        lastShotMilliseconds = System.currentTimeMillis();        this.game = game;        this.ox = ox;        this.oy = oy;        this.oz = oz; ...

创建Eclipse游戏插件,第3部分: 启动游戏(3)

时间:2011-02-10 IBM Tyler Anderson

在创建 Bullet 类时,把静态变量 lastShotMilliseconds 初始化为当前时间,并设置 x、y 和 z 坐标,就像对 Bug 类所做的那样。请按照清单 4 修改发射 BB 弹(称为 “bullets”)的方法。

清单 4. 发射子弹

public void shoot(){      for(int i = 0; i < bullets.length; i++)        if(!bullets[i].fired){           bullets[i].shoot(gun.translationx, gun.translationy);           break;        }    }

现在发射 BB 弹时将提供枪的当前坐标,这样在射击时 BB 弹就会在枪口指向的位置出来,而不是在枪的原始位置出来。请照此修改 Bullet 类的 shoot 方法,如清单 5 所示。

清单 5. 修改 shoot 方法

public void shoot(float tGunX, float tGunY){        long now = System.currentTimeMillis();        if(now - lastShotMilliseconds < 250)          return;        lastShotMilliseconds = now;        translationGunX = tGunX;        translationGunY = tGunY; ...

这里就是射击的地方,但是只有不超过允许的射击速率才可以。然后设置枪的坐标,分别保存在 translationGunX 和 translationGunY 中。请修改 draw 方法,利用枪和子弹的坐标,如清单 6 所示。

清单 6. 在正确的位置绘制枪

public void draw(){        if(translation >= -100 && fired){          GL.glTranslatef(translationGunX + ox,                  translationGunY + oy,               

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站: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号