昨天我們做完了我們的扣血機制,有扣血也要有補血嘛!
所以我們今天就來加上補血的機制!
Photo by Anna Kolosyuk on Unsplash
主角站到一個樓梯時,補 1 生命值,並且不能重複補血。
一樣我們利用之前的碰撞 callback
來完成這個機制。
這邊我們利用他是物件的特性給他一個屬性是 isHeal
讓我們來確定是不是已經被踩過補過血了。
記得也要在心串間的樓梯上新增唷!
function create(){
...
// 加上碰撞後的callback
this.physics.add.collider(player, grounds, heal, null, this);
...
grounds.getChildren().forEach((el) => {
el.body.immovable = true;
el.body.checkCollision = groundCollision;
el.isHeal = false;
});
}
function update(){
...
grounds.getChildren().forEach((el) => {
if (el.y < 0) {
el.destroy();
ground = grounds
.create(
Phaser.Math.Between(0, 600),
Phaser.Math.Between(1200, 1250),
"ground"
)
.setScale(0.5);
ground.body.immovable = true;
ground.body.checkCollision = groundCollision;
ground.isHeal = false;
}
});
}
function heal(player, ground) {
// 確認是否滿血並且樓梯沒有被踩過補過血
life += life === 10 || ground.isHeal ? 0 : 1;
// 補完把屬性轉成 true
ground.isHeal = true;
}
今天完成了補血機制,我們的下樓梯雛形漸漸地在出現了~
就快完成了~加油加油!讓我們明天繼續努力!
Phaser
Game
2020鐵人賽