LayaAir飞机大战-5

  1. 增加血瓶和子弹升级道具(图集)

//角色类型

public type:string;

//阵营

public camp:number;

//血量

public hp:number;

//速度

public speed:number;

//被击半径

public hitRadius:number;

//0普通,1子弹,2炸药,3补给品

public heroType:number = 0;

public init(_type:string,_camp:number,_hp:number,_speed:number,_hitRadius:number,_heroType = 0):void{

this.type = _type;

this.camp = _camp;

this.hp = _hp;

this.speed = _speed;

this.hitRadius = _hitRadius;

this.heroType = _heroType;

//缓存强化包

Laya.Animation.createFrames(["war/ufo1.png"],"ufo1_fly");

//缓存医疗包

Laya.Animation.createFrames(["war/ufo2.png"],"ufo2_fly");

}

  1. 修改子弹射击逻辑.

//遍历舞台上所有到飞机,更改飞机状态

for(var i:number = this.roleBox.numChildren-1; i>-1; i--){

var role:Role = this.roleBox.getChildAt(i) as Role;

if(role && role.speed){

//根据速度来改变位置

role.y += role.speed;

//如果敌机移动到显示屏外则移除掉

if(role.y>1000 || !role.visible || (role.isBullet && role.y<-20)){

//从舞台移除

role.removeSelf();

//回收之前重置属性

role.isBullet = false;

role.visible = true;

//回收到对象池

Laya.Pool.recover("role",role);

}

}

//处理发射子弹到逻辑

if(role.shootType>0){

//获取当前时间

var time:number = Laya.Browser.now();

//如果当前时间大于下次射击时间

if(time > role.shootTime){

//更新下次射击时间

role.shootTime = time + role.shootInterval;

 

//根据不同到子弹类型,设置不同的数量及位置

var pos:Array = this.bulletPos[role.shootType - 1];

for(var index:number = 0; index< pos.length; index++){

//从对象池里创建一个子弹

var bullet:Role = Laya.Pool.getItemByClass("role",Role);

//初始化子弹信息

bullet.init("bullet1",role.camp,1,-4-role.shootType - Math.floor(this.level/15),1,1);

//设置角色类型为子弹类型

//bullet.isBullet = true;

//设置子弹的位置

bullet.pos(role.x + pos[index] ,role.y - role.hitRadius - 10);

//添加到舞台

this.roleBox.addChild(bullet);

}

}

}

}

 

  1. 增加必备的属性.

//子弹发射偏移位置表

private bulletPos:Array> = [[0],[-15,15],[-30,0,30],[-45,-15,15,45]];

//关卡等级

private level:number = 0;

//积分成绩

private score:number = 0;

//升级等级所需要到成绩数量

private levelUpScore:number = 0;

//子弹级别

private bulletLevel:number = 0;

 

  1. 增加击败敌机BOSS掉子弹升级道具的逻辑

if(role.type == "enemy3"){

//随机道具子弹或血瓶

var type:number = Math.random() <0.7 ? 2:3;

//掉落血瓶或者是子弹升级道具

var item:Role = Laya.Pool.getItemByClass("role",Role);

//初始化信息

item.init("ufo"+(type-1), role.camp, 1, 1, 15, type);

//设置位置

item.pos(role.x,role.y);

//添加到舞台上

this.roleBox.addChild(item);

}

  1. 实现吃血瓶道具升级功能.

lostHp(role:Role,lostHp:number):void{

//减血

role.hp -= lostHp;

if(role.heroType === 2){

//每次吃一个子弹升级道理,子弹升级加一

this.bulletLevel++;

//子弹每升两级,子弹数量加1,最大数量为4

this.hero.shootType = Math.min(Math.floor(this.bulletLevel /2) + 1,4);

//子弹级别越高,发射频率越快

this.hero.shootInterval = 500 - 20*(this.bulletLevel > 20?20:this.bulletLevel);

//隐藏道具

role.visible = false;

}

else if(role.heroType === 3){

//每吃一个血瓶,血量增加1

this.hero.hp++;

//设置最大血量不超过10

if(this.hero.hp> 10)this.hero.hp = 10;

//隐藏道具

role.visible = false;

}

 

else if(role.hp>0){

//如果未死亡,则播放爆炸到动画

role.playAction("hit");

}

else{

if(role.isBullet){

//如果是子弹,则直接隐藏

role.visible = false;

}else{

role.playAction("down");

//集中boss时掉落道具

if(role.type == "enemy3"){

//随机道具子弹或血瓶

var type:number = Math.random() <0.7 ? 2:3;

//掉落血瓶或者是子弹升级道具

var item:Role = Laya.Pool.getItemByClass("role",Role);

//初始化信息

item.init("ufo"+(type-1), role.camp, 1, 1, 15, type);

//设置位置

item.pos(role.x,role.y);

//添加到舞台上

this.roleBox.addChild(item);

}

}

}

}

你可能感兴趣的:(LayaAir飞机大战-5)