╋艺 镇╋╋网站网络|程序语言|Flash╋┣◇FLASH交流 → 飞机游戏(彩京类型飞天站记)源码教程


  共有13769人关注过本帖树形打印复制链接

主题:飞机游戏(彩京类型飞天站记)源码教程

美女呀,离线,留言给我吧!
卡西莫咄
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:注册用户 帖子:18 积分:338 威望:0 精华:0 注册:2008/6/6 15:19:56
飞机游戏(彩京类型飞天站记)源码教程  发帖心情 Post By:2008/6/24 11:51:06 [只看该作者]

 这次讨论的是关于飞机游戏(彩京类型)的,结合我做的《飞天战记》来做实例。
我这个游戏也藏考了别人的DD,比如,boss的散弹发射,请看OX的帖子(自己找!)。
建议大家在看源码时,最好要看懂,不要抱着偷别人的过来用这种心态,当然,一些好看的动画可以直接截取,不反对的,呵呵。
有不懂的,就问其他高手把,这只是我个人的思路,很复杂的东西。。。

 

 

.画面
游戏要成功,首先你看到的是它的画面。
彩京有很多种版本,可爱型的(武装飞鸟)、铿锵型的(1942),飞机(人物角色)的设计都是很有特色,游戏的战斗画面很绚丽,尤其是爆炸效果!
(画面不做仔细研究,毕竟我的美工一般。。。)

2.战斗控制
终于讲到精彩部分拉!这可是精华!之所以彩京会那么受欢迎,是它在操作中加入了很多人性化的东西,我们仔细把它挖出来!

.操作(重点)
游戏有了漂亮的画面,接下就是玩它的操作手感了。
彩京的操作分成2个部分(选人、控制):

1.选人
几乎每个多角色的游戏选人这个都会做文章,彩京系列一般有5~7命人物可供选择,它采用的方法是:上下窗口模式的(或左右窗口模式),即上面2/3的画面是角色的全身彩图,下面1/3的是在游戏中的战斗状态图。

除了常规的,它还有个选隐藏人物的选择框,我还记得某代的选择方法是“上3下3上7”。以下是《飞天战记》的选人制作部分:

 

这里要提到几个相关的东西:
威力:提高子弹威力,有上限,到底上限后,加了就会转化成分数;
雷:用来救命或者强力攻击敌的东西,初始数目为2~3个,没有上限;
积气:按住子弹键不放,就会累积,到达一定量后, 就可以放出绝招;
奖人:+1条生命;
分数:打死敌人、拣到金币等,就会得分。

1)出现
彩京的角色出现时,有一段时间处于无敌状态,刚冲出来到预定地方,这段飞行距离是不能控制的,在无敌期间,可以开枪、积气、放雷(这就是人性化的东西)。

2) 人物的常规控制
就是控制人物满屏幕的移动,子弹攻击,积气,放雷。

a.移动
移动的AS论坛上不知贴了多少个了,这里就不解释。
人性化:把人物上下左右中的5个移动动作都做出来,会增加你游戏的生动性。

b. 子弹攻击(一般攻击)
要注意子弹的检测,比如检测最近的1~20个,不然,你放出的子弹,打到敌人会没反应。

c. 积气
当长按子弹键不放,到达一定量,就会有绝技,这里主要时用到attachMovie,把积气完成的动画和释放的绝技加载到角色身上。

d.放雷
比较容量,做一个MC,一碰到敌人,敌人就减血,别忘了做删除,不然就无敌了!

3)死亡
彩京系列正确的死亡只有一种,就是被敌人的子弹击中,死亡后,人物的数据就要清零。
人性化:撞中敌人时,并不会死掉,只时子弹的威力会-1级。
这里例举《飞天站记》中“扫把女”的控制AS,下面中的“saoba”定义的就是扫把女身上的控制点(即,碰撞区)
扫把女的MC名字是库里的:MC
à加载扫把女,其他几个人的方法一样。


onClipEvent (load) {
xunhuan=0
function cyzd() {//子弹的设置
_root.attachMovie("drzd2", "zd"+_root.zd, _root.zd);
_root["zd"+_root.zd].n = _parent.n;
_root.zd++;
xunhuan ++
}
_parent.life1 = 200;//生命
_parent._y = 0;
_parent._x = random(300)+70;//y轴随即出现
_parent.speed = 5;//速度
pp = setInterval(cyzd, 1500);//1500毫秒出现循环
}
onClipEvent (enterFrame) {
if (_parent._y<150) {//飞行路线
_parent._y = _parent._y+_parent.speed;
}
if (_parent._y>=150) {
pp();
}
if((_root.ming < 0) || (_root.over == 1)){ //当大眼妖血<0,或者游戏判断出主角全部死亡时,删除大眼妖
clearInterval(pp);
_parent.removeMovieClip();
}
if (xunhuan > 3) {//放3次子弹,就飞走
_parent._y = _parent._y+_parent.speed;
clearInterval(pp);
if(_parent._y>600){
_parent.removeMovieClip();
}
}
if (this.hitTest((_root.rw.boom)||(_root.boom))) {//碰上雷时
_parent.gotoAndPlay(10);
clearInterval(pp);
}
}
onClipEvent (enterFrame) {
for (bbb=0; bbb<20; bbb++) {//检测子弹
if (this.hitTest("_root.zidan"+(_root.i-bbb))) {
removeMovieClip("_root.zidan"+(_root.i-bbb));
_parent.life1 -= _root.weili;
if (_parent.life1<=0) {//血<0,就死了
_parent.gotoAndPlay(10);
clearInterval(pp);
} else {
_parent.gotoAndPlay(2);
}
}
}
if (this.hitTest(_root.daodan)) {//碰上导弹
_parent.life1 -= _root.weili1;
if (_parent.life1<=0) {
_parent.gotoAndPlay(10);
clearInterval(pp);
} else {
_parent.gotoAndPlay(2);
}
}
if (this.hitTest(_root.bsj)) {//碰上绝技
_parent.life1 -= _root.weili2;
if (_parent.life1<=0) {
_parent.gotoAndPlay(10);
clearInterval(pp);
} else {
_parent.gotoAndPlay(2);
}
}
}

平面设计、网站建设、三维动画、视频制作 联系QQ:114103945  回到顶部
美女呀,离线,留言给我吧!
卡西莫咄
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:注册用户 帖子:18 积分:338 威望:0 精华:0 注册:2008/6/6 15:19:56
  发帖心情 Post By:2008/6/24 11:51:36 [只看该作者]

源码

 

游戏中的MC文件都在库里的MC文件夹下,地图是:场景011-场景013;人物控制是:加载×××(角色的名字),敌人是:×××(敌人的名字),角色的子弹、积气、绝技、雷,都对应写好了:××子弹、××积气、××绝技、××雷。

源码,比较大,地址:
http://www.fs2you.com/files/8fb5e975-e09b-11dc-bf54-0014221f4662/  (由于51as使用的空间不让提供下载,所以用这个网络硬盘)

其他的就不说了,我写的AS太恐怖了,我自己现在都佩服当时写的毅力!看不懂了。。。

 

onClipEvent (load) {
_root.bao = 0;//雷的数目
_parent.power = 0;//子弹检测时间
_parent._x = 200;
_parent._y = 600;
_parent.saoba._alpha = 20;//一出来角色的透明度
_parent.baohu._alpha = 100;//一出来时的无敌光环
_root.lv = 1;//子弹威力等级
speed = 10;//扫把女的移动速度
_root.i = 1001;//在游戏中的深度
function fashe() {//加载子弹
_root.attachMovie(zd, "zidan"+_root.i, _root.i);
_root["zidan"+_root.i]._x = _root.rw._x+14;
_root["zidan"+_root.i]._y = _root.rw._y-15;
_root.i++;
if (_root.i>1013) {
_root.i = 1001;
}
}
}
onClipEvent (enterFrame) {//子弹威力的检测
if (_root.lv == 1) {
zd = "zidan21";
} else if (_root.lv == 2) {
zd = "zidan22";
} else if (_root.lv == 3) {
zd = "zidan23";
} else if (_root.lv>=4) {
_root.lv = 4;
zd = "zidan24";
}
if (_parent.saoba._alpha<70) {//一出来的那段不能控制飞行
_parent.saoba._alpha = _parent.saoba._alpha+5;
_parent._y = _parent._y-15;
}
if (_parent.saoba._alpha>=70) {//常规的移动控制
if (Key.isDown(65) && (_parent._x>-5)) {
_parent._x -= speed;
_parent.saoba.gotoAndStop(2);
} else if (Key.isDown(68) && (_parent._x<415)) {
_parent._x += speed;
_parent.saoba.gotoAndStop(3);
}
if (Key.isDown(87) && (_parent._y>30)) {
_parent._y -= speed;
} else if (Key.isDown(83) && (_parent._y<520)) {
_parent._y += speed;
}
if (Key.isDown(74)) {//开枪(一般攻击)
_parent.power++;
if (_parent.power<6) {
fashe();
}
if (_parent.power<10) {//积气
_parent.attachMovie("yunqi", "yunqi", 2);
_root.rw.yunqi._x = 20;
_root.rw.yunqi._y = 33;
} else if (_parent.power == 90) {//释放绝招
_parent.attachMovie("yunqi02", "yunqi02", 3);
_parent.yunqi.removeMovieClip();
}
}
}
if (_root.bao == 0) {//放雷时,角色处于无敌
_parent.baohu._alpha--;
}
if (_parent.baohu._alpha<=0) {
_parent.saoba._alpha = 100;
if (Key.isDown(75)) {
if (_root.baoxian>0) {
_root.bao = 1;
_parent.baohu._alpha = 100;
_parent.boom.gotoAndPlay(2);
}
}
}
}
onClipEvent (keyUp) {//释放按键
if (Key.getCode() == 74) {//检测是否积气完成
if (_parent.power>=90) {
_root.attachMovie("bsj02", "bsj", 1021);
_root.bsj._x = _root.rw._x+6;
_root.bsj._y = _root.rw._y;
_parent.power = 0;
}
_parent.yunqi.removeMovieClip();
_parent.yunqi02.removeMovieClip();
_parent.power = 0;
}
if (Key.getCode() == 65) {//角色在左右飞行时的倾侧
_parent.saoba.gotoAndStop(1);
}
if (Key.getCode() == 68) {
_parent.saoba.gotoAndStop(1);
}
}

很乱的东西。。。。重复了,自己优


4)敌人

 

有了主角没反派可不行,敌人也分很多种,傻瓜型、肉血型等等。这里就说2种:

a. 傻瓜型

就是刚出来的小兵,只发一个子弹,就走人的。

例子:《飞天站记》中用的大眼妖

 

onClipEvent (load) {
_parent._y = 0;
_parent._x = random(350)+50;//y轴上随即出现
_parent.speed = 6;//速度
_root.attachMovie("drzd1", "zd"+_root.zd, _root.zd);//发射子弹
_root["zd"+_root.zd].n = _parent.n;
_root.zd++;
}
onClipEvent (enterFrame) {
_parent._y = _parent._y+_parent.speed;
if (_parent._y>600) {
_parent.removeMovieClip();
}
if ((_root.ming < 0) || (_root.over == 1)) {//当大眼妖血<0,或者游戏判断出主角全部死亡时,删除大眼妖
_root["zd"+_root.zd].removeMovieClip();
_parent.removeMovieClip();
}
}

b.

例子:苍蝇怪(打了会出子弹威力)

肉血型
相信大家从小在街级游戏厅就玩过彩京这类的飞机吧,个人认为彩京系列是最棒的飞机游戏!下面我们就研究一下它成功的要素。

“艺镇”官方站:www.zyzsky.com QQ群:1221854  回到顶部
美女呀,离线,留言给我吧!
mazecity
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:论坛游侠 帖子:243 积分:2134 威望:0 精华:0 注册:2007/12/25 16:21:28
  发帖心情 Post By:2008/6/24 15:41:26 [只看该作者]

要是有图就好了


  
平面设计、网站建设、三维动画、视频制作 联系QQ:114103945  回到顶部