最後加入碰撞事件與扣血機制
在一開始的 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);
}
},
//...
})
最後就可以看到我們的炮塔會自動發射,並且打到敵人子彈會就會消失,打到的一定的程度敵人就會消失
而這就是塔防遊戲的雛形,但仍然有許多地方可以優化與擴增
優化:
你會發現每個炮塔都是對同一個目標,應該可以個別設定炮塔的偵測方式
可以增加等人血量條方便看還要打多久
...
擴增:
打死敵人會有錢,錢可以做很多事情,升級炮塔、購買炮塔、融合、法術之類的
不同的敵人,會有不同的速度、血量、外表...
不同的炮塔,會有不同的攻擊速度、攻擊方式、攻擊半徑、外表...
不同的子彈,會有不同的速度、存活時間、傷害、外表...
遊戲機制,是要守住城堡血量、還是要做對打連線遊戲
.....
這邊會有很多種的玩法,這就是看你的想象力與創造力啦
明天會跟大家講我做擴增這一塊的想法(包含模組化、希望的架構、擴增的目標......)