Phaser 3 中的健康条

Healthbars in Phaser 3

我正在 Phaser 3 中制作自上而下的僵尸射击游戏。

我正在使用 moveToObject 函数让僵尸跟随玩家。现在我想为僵尸制作健康条。我读到过可以使用容器让敌人和血条一起移动,但我无法使用 moveToObject 移动容器。

是否可以使用 moveToObject 函数移动容器,还是我应该使用其他函数来代替?

看起来 moveToObject 方法寻找单个项目的速度,根据 API Docs,Container 不保持整体速度。但是添加到容器中的每个对象都应该有一个速度。

解决此问题的快速方法是遍历容器的对象并将每个项目告诉 moveToObject。我在这里改编了 Phaser Labs 中的示例:

var block = this.physics.add.image(600, 300, 'block');
var clown2 = this.physics.add.image(20, 200, 'clown');
var clown = this.physics.add.image(200, 300, 'clown');
var container = this.add.container(10, 200, [clown, clown2]);


for (var x = 0; x < container.list.length; x++) {
  this.physics.moveToObject(container.list[x], destination, 200);
}

这可能不是最干净的解决方案,但它应该有助于完成您想要做的事情。 Phaser API 文档说 moveToObject 与包含 Container 的 GameObject 一起工作。这可能值得作为一个错误报告,以查看是否有一种方法可以修复基本代码以允许容器工作。如果您愿意,可以报告问题 here