快速业务通道

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

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-19
        translationx -= delta;            if(translationx < -max)              translationx = -max;            if(translationx > max)              translationx = max;            if(translationy < -max)              translationy = -max;            if(translationy > max)              translationy = max;          }        };        t.scheduleAtFixedRate(tt, 0, 2); ...

首先,添加新的变量并把它们初始化为 false,表示枪在开始时并未移动。然后设置 TimerTask 的 run 方法,根据枪的当前方向 ,加上或减去 translationx 或 translationy。另外,通过限制移动不能超过 x 轴和 y 轴 +/- 极限,限制枪的移动。这样,枪就不会离开原点太远,因为虫子怎么也不会在那里。

碰撞检测

多数计算机游戏都使用某种碰撞检测。在许多情况下,碰撞检测用在一个范围上,好让玩家操纵某个东西在屏幕上移动。在这个游戏中,我们在 BB 弹和虫子之间实现了碰撞检测。

游戏和碰撞检测

如果没有某种形式的碰撞检测,计算机游戏就没有意义,因为没有它游戏就无法对玩家做的 “好事” 作出响应(在这个游戏中,“好事” 指的就是击中了一只虫子)。第一人称射击游戏用许多方式实现碰撞检测,例如可以攻击的墙或身体的一部分,采用某些比其他方式更致命的射击。爆炸也涉及碰撞检测,与大型 BB 弹的功能类似,而且离得越远,受的伤害越小。

碰撞检测实现

实现碰撞检测有多种方法,有些比较复杂。游戏编程对计算机处理能力的消耗很大。在游戏中可做的事情很多,如果同时做这些事,那么游戏会慢下来,甚至不堪忍受。最复杂的碰撞检测方法可以是强力算法,搜索对象表面的每个像素,查看 BB 弹是否击中了它。另一个方法可能是某种非线性函数,检测曲线对象上的碰撞;但是这个方法可能会更复杂。在这个教程中,我们将使用相对简单的碰撞检测。

简单的碰撞检测

为了最大限度地利用这个游戏,在每件事上我们都用最简单的方法,包括碰撞检测。简单方法的好处就是游戏的玩家并不介意碰撞检测是否完美。一个简单的方法是 3 维距离算法,可以用 Bug.RADIUS 进行计算,这样如果一颗 BB 弹进入了虫子的范围,就触发虫子上的 “爆炸”。不过这可能会涉及一个平方函数,这个函数是比较运算密集型的。更好的方法可能是一种简单的 3 维六边形窗口化函数。这个函数需要 BB 弹所在的点,以及虫子位于其中的最小盒子,这样,可以想像有一个看不到的立方体包着虫子。如果 BB 弹进入这个立方体,虫子就被击中了。这一节剩下的部分将实现这个算法。

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

时间:2011-02-10 IBM Tyler Anderson

扩展 Bug 类

为了帮助 Bug 类进行碰撞检测,我们需要添加两个布尔类型的变量,区分活着的、爆炸的和死掉的虫子。这些变量有助于在 Bug 类中保存虫子的状态 —— 这意味着如果虫子是活的,就应当显示并正确地活动。如果虫子爆炸了,就显示为爆炸。如果死掉,就不应当影响游戏或显示。请添加这些状态变量和计时器功能,如清单 15 所示。

清单 15. 扩展 Bug 类的功能

private boolean blowUp;      private boolean dead;      Timer t;      TimerTask tt;      public Bug(float[] color, float ox, float oy, float oz) {        dead = false;        blowUp = false;        t = new Timer(); ...

添加了两个布尔变量保存虫子是否爆炸,添加

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