iT邦幫忙

2019 iT 邦幫忙鐵人賽

DAY 17
0

最後加入碰撞事件與扣血機制

在一開始的 config 加入

var config = {
    //...
    physics: {
        default: 'arcade'
    },
    //...
}

並將會有碰撞的敵人與子彈加入物理碰撞

function create(){
    //...
    // enemies = this.add.group({ classType: Enemy, runChildUpdate: true });
    enemies = this.physics.add.group({ classType: Enemy, runChildUpdate: true });
    // bullets =  this.add.group({ classType: Bullet, runChildUpdate: true });
    bullets = this.physics.add.group({ classType: Bullet, runChildUpdate: true });
}
this.physics.add.overlap(enemies, bullets, damageEnemy);

並開始撰寫碰撞事件

//在全域加入
var BULLET_DAMAGEb = 50
function damageEnemy(enemy, bullet) {  
    if (enemy.active === true && bullet.active === true) {
        bullet.setActive(false);
        bullet.setVisible(false);    
        
        enemy.receiveDamage(BULLET_DAMAGE);
    }
}

在敵人類別加入血量與扣血方式

var Enemy = new Phaser.Class({
    //...
    startOnPath:{
        //...
        this.hp = 100;
    },
    receiveDamage: function(damage) {
        this.hp -= damage;           
            
        if(this.hp <= 0) {
            this.setActive(false);
            this.setVisible(false);      
        }
    },
    //...
})

最後就可以看到我們的炮塔會自動發射,並且打到敵人子彈會就會消失,打到的一定的程度敵人就會消失

而這就是塔防遊戲的雛形,但仍然有許多地方可以優化與擴增

優化:
你會發現每個炮塔都是對同一個目標,應該可以個別設定炮塔的偵測方式
可以增加等人血量條方便看還要打多久
...

擴增:
打死敵人會有錢,錢可以做很多事情,升級炮塔、購買炮塔、融合、法術之類的
不同的敵人,會有不同的速度、血量、外表...
不同的炮塔,會有不同的攻擊速度、攻擊方式、攻擊半徑、外表...
不同的子彈,會有不同的速度、存活時間、傷害、外表...
遊戲機制,是要守住城堡血量、還是要做對打連線遊戲
.....
這邊會有很多種的玩法,這就是看你的想象力與創造力啦

明天會跟大家講我做擴增這一塊的想法(包含模組化、希望的架構、擴增的目標......)

學習的網站
我的github


上一篇
Day 16 塔防遊戲 ~ 發射子彈
下一篇
Day 18 塔防 module 架構篇
系列文
關於你關於我關於phaser30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言