//角色类型
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");
}
//遍历舞台上所有到飞机,更改飞机状态
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
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);
}
}
}
}
//子弹发射偏移位置表
private bulletPos:Array
//关卡等级
private level:number = 0;
//积分成绩
private score:number = 0;
//升级等级所需要到成绩数量
private levelUpScore:number = 0;
//子弹级别
private bulletLevel:number = 0;
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);
}
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);
}
}
}
}