快速业务通道

飞机躲避小游戏-是男人就撑100秒的制作

作者 佚名技术 来源 服务器技术 浏览 发布时间 2012-07-08

 摘要:
可以将这个游戏的整体运作看成一个粒子系统,再加上子弹和飞机的碰撞判定即可.简单起见,这里的飞机采用球体.
关键词: 粒子系统,飞机躲避游戏
Small STG Game---Lasting 100 Secs''s making process
EmilMatthew(EmilMatthew@126.com)
Abstract:
We could treat this game as a particle system, which only needs the collide detect additionally.
To be easy enough as a sample program, I use one ball to take place of the plane in the game.

Key words: Particle System, Plane avoids bullets game

1前言:
是男人就撑100秒是一个流行广泛,但又略显BT意味的小游戏。游戏的玩法就是四周不断的有子弹射出,而你的任务就是控制你的飞机不断的躲避,直到被击中,以躲避时间的长短来评定游戏水平的高低。
这个游戏在实现是比较容易的,由于子弹在这里占据了主要地位,所以考虑以子弹为中心,即考虑构建一个粒子系统,来控制子弹的发射,发射方向的计算,以及出界的判定等。至于飞机方面,则只要有控制的部分(事件驱动,事件监听或用循环,要视具体实现环境而定),把两者结合起来,只要加上飞机与子弹间的碰撞检测即可,这里出于演示的目的,简单起见,采用球代替飞机的造型。

2子弹粒子系统的运作流程:
子弹的粒子系统要控制好子弹的发射,发射方向的计算,出界的判定以及碰撞检测.
该粒子系统的总体框架并不困难,这里给出我实现过程中的总体框架:
while(runFlag)
{
Forallparticles
{
If(currentparticleisnotlived)
{
Initthisparticle.
}
Elseif(currentparticleisoutofthegamearea)
{
Currentparticlesettodead.
}
Else
{
Currentparticlemoveandshow
If(currentparticleiscollidedwiththeplane)
runFlag=flase;
}
}
} 这里要注意一下if….else if 中的条件判定对应的现实意义,即是否会出现实中无意义但在程序中却出现的情况,如果出现的话,这样的BUG将比较难抓出.
比如这里,如果将if及else if 中语中的条件及对应的内容作相应的交换,即:
if(currentparticleisoutofthegamearea)
{
Currentparticlesettodead.
}
Elseif(currentparticleisnotlived)
{
Initthisparticle.
} 在第一个if判定中,会将这样一种情况被包括进去:
if(currentparticleisoutofgamearea&&currentisnotlived)此时,将导致第二个判定永远无法到达.
所以,当条件复杂且多的时候,最好是列张真值表,看看所有可能的情况是否都如期的到达该到的判定条件处,避免在程序调试中浪费过多不避要的时间.

3子弹粒子设计细节:
3.1子弹粒子的数据结构及存储方式.
粒子类以一个类的形式进行封装,里面包含了一些基本的物理属性及粒子相关的一些动作(函数)。简要的情况如下:
classSPhy.CSPhyMcextendsMovieClip
{
publicvarv:Number=0;//1demisionVelocityortogetherVelocityofvx,vy
publicvarvx:Number=0;
publicvarvy:Number=0;
……

publicfunctionsetLife(lifeValue:Number):Void
{
life=lifeValue;
}

publicfunctiongetLife():Number
{
returnlife;
}

publicfunctionisLived():Boolean
{
returnlife==LIVED;
}
……
}而在游戏中,这采用一个数组来实现粒子的群落,理由是使用方便而且快速。(当然,出于一种美学上的要求,你可能会选链表,因为它的插入和删除来的比较漂亮和干净,这就取决于你自己的喜好了)
至于子弹起始的坐标值,则是随机的散落于游戏屏幕区域外围,要写个相应的算法并不困难(详见代码部分)


3.2 发射角的计算.
发射角的计算相当于一道简单的高中向量的题目:
已知两点P1(x1,y1),P2(x2,y2),求P1指向P2的单位向量a.
求解:
a) 计算两点间的距离L=sqrt((x1-x2)^2+(y1-y2)^2)
b) 求出P1P2(向量),P1P2=((x2-x1)/L,(y2-y1

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