新增遊戲資源並快取動畫.
//快取子彈動畫
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 敵方的飛機型別分為大中小,要隨機下落 飛機的隨機下落,大中小飛機出現頻率...