LayaAir飛機大戰 4

2021-08-21 13:12:05 字數 2493 閱讀 2538

新增遊戲資源並快取動畫.

//快取子彈動畫

laya.animation.createframes(["war/bullet1.png"],"bullet1_fly");

增加子彈射擊的基礎屬性.

//射擊型別

public shoottype:number = 0;

//射擊間隔

public shootinterval:number = 500;

//下次射擊時間

public shoottime:number = laya.browser.now()+2000;

//當前動作

public action:string = "";

//是否是子彈

public isbullet:boolean = false;

實現發射子彈的邏輯.

onloop():void{

//遍歷舞台上所有的飛機,更改飛機的狀態

for(var i:number = this.rolebox.numchildren-1;i>-1;i--){

var role:role = this.rolebox.getchildat(i) as 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);

實現子彈與飛機到碰撞邏輯.

//檢測碰撞

for(var i:number = this.rolebox.numchildren-1;i>-1;i--){

//獲取角色物件1

var role1:role = this.rolebox.getchildat(i) as role;

if(role1.hp<1)continue;

for(var j:number = i-1;j>-1;j--){

//如果角色已經死亡,則忽略

if(!role1.visible)continue;

//獲取角色物件2

var role2:role = this.rolebox.getchildat(j) as role;

//如果角色未死亡,並且陣營不同才能進行碰撞

if(role2.hp>0 && role1.camp != role2.camp){

//計算碰撞區域

var hitradius:number = role1.hitradius + role2.hitradius;

//根據距離判斷是否碰撞

if(math.abs(role1.x - role2.x) < hitradius && math.abs(role1.y - role2.y) < hitradius){

//碰撞之後掉血

this.losthp(role1,1);

this.losthp(role2,1);

losthp(role:role,losthp:number):void{

//減血

role.hp-=losthp;

*角色類

this.body.on(laya.event.complete,this,this.onplaycomplete);

onplaycomplete():void{

//如果是擊毀動畫,則隱藏物件

if(this.action === "down"){

this.body.stop();

//隱藏顯示

this.visible = false;

else if(this.action === "hit"){

this.playaction("fly");

LayaAir飛機大戰 6

增加難度條件,實現積分達到條件後進入新關卡的邏輯 onloop void 檢測碰撞 for var i number this.rolebox.numchildren 1 i 1 i 獲取角色物件1 var role1 role this.rolebox.getchildat i as role i...

pygame飛機大戰4

pygame.mask.from su ce self,image 對的非透明部分做標記 pygame.sprite.spritecollide b,enemies,false,pygame.sprite.collide mask 完美檢測碰撞 me.rect.midtop,子彈生成在飛機的中間的頂...

飛機大戰 3

今天主要是敵方飛機的建立,下落 前面已建飛機的父類call 2 敵方飛機 function enemyplane hp,x,y,sizex,sizey,score,dietime,sudu,bombplane,srcimage 敵方的飛機型別分為大中小,要隨機下落 飛機的隨機下落,大中小飛機出現頻率...