值
开
度
}
开始刷新普通坦克,玩家开始挑战下一关
MovieClip(parent)。j=-300;
//同上 MovieClip(parent)。des+=-0。05;
//玩家伤害 减少0。05,下一关的领主将会更难对付 MovieClip(parent)。guan。play();
//关卡元件
始播放,模拟通关效果
MovieClip(parent)。bh。y=-120;
//显示领主生
命值的文本框元件移动到屏幕外
this。parent。removeChild(this);
//删除领主
}
else //如果攻击没有击
败领主
{ MovieClip(parent)。d=5; //屏幕抖动 MovieClip(parent)。boomBoss。gotoAndPlay(2); //特效 元件播放 alpha+=- MovieClip(parent)。des;
//领主透明
下降
}
}
}
32
1.4 领主子弹类
领主子弹类为静态图片,拥有可见部分和碰撞检测部分。如图3。7。1所示,蓝色圆形区域为可见部分,圆形半透明点阵部分为碰撞检测部分(图层1)。
33
图3。7。1 领主子弹元件设计界面
3。7。1 领主子弹的移动
领主发射的子弹跟普通敌人的子弹也不一样,它取消了向上下左右4个方向运动的效果,取而代之的是360度的全方位发射。这个效果需要借助Flash中的数学函数,即Math。sin和Math。cos,具体方法请看下面的代码:
private var vx:Number; private var vy:Number; private var banJing:Number; private var jiaoDu:Number;
x=MovieClip(parent)。bossX; y=MovieClip(parent)。bossY; banJing=5;
jiaoDu=Math。random()*360; vx=banJing*Math。cos(jiaoDu);
//定义变量
//子弹初始横坐标为领主的横坐标 //子弹初始纵坐标为领主的纵坐标 //子弹的发射角度在360度内随机
//利用三角函数,将横坐标上的速度vx表示出来, 只有这样电脑才能运行子弹的运动模拟出来
34
//子弹速度为5
vy=banJing*Math。sin(jiaoDu); //同上
3。7。2 领主子弹与玩家的碰撞
首先领主子弹不会与墙碰撞,跟领主一样,也会“穿墙而过”,增加了难度。由于领主在发射子弹时,领主的子弹会很多,为了时游戏顺畅运行,较少内存占用,领主子弹没有添加滤镜效果,并且超出游戏范围后就会消失。而领主子弹与玩家的碰撞检测方法跟普通敌人子弹的检测方法一样,具体请参照普通敌人子弹类,这部分代码唯一与之不同的是碰撞后玩家会损失大量的生命值。
if (MovieClip(parent)。health。width>50)
35
{ } else { }
MovieClip(parent)。health。width=2; MovieClip(parent)。health。width+=-50;
1.5 玩家生命值
玩家生命值元件为显示了玩家的生命状态,越长则生命值越多,采用了纵向颜色渐变效果,如图3。8。1所示。
图3。8。1 玩家生命值元件设计界面
36