首页 > 解决方案 > 将组添加到关注者 - Phaser 3

问题描述

我是 Phaser 3 的菜鸟,并试图在追随者中添加一个组(2 个精灵)。当我在“add.follower”处使用精灵时,该代码有效。

function create () {

    var bola = this.add.group();

    bola.create(0, 0, 'bola15');
    bola.create(0, 0, 'bolasombra');

    var line1 = new Phaser.Curves.Line([ 100, 100, 500, 100 ]);
    var line2 = new Phaser.Curves.Line([ 500, 100, 500, 500 ]);

    path1 = this.add.path();

    path1.add(line1);
    path1.add(line2);

    var mover = this.add.follower(path1, 0, 0, bola);

    mover.startFollow({
        positionOnPath: true,
        duration: 3000,
        yoyo: false,
        repeat: 0,
        rotateToPath: false,
        verticalAdjust: true
    });
}

这就是我得到的:

错误

任何解决方案,或其他方式来制作类似的东西?

编辑:

尝试使用“容器”并得到相同的结果:

bola = this.add.container(0,0);
bola1 = this.add.sprite(0,0,'bola15');
bola2 = this.add.sprite(0,0,'bolasombra');  
bola.add(bola1);
bola.add(bola2);

标签: htmlphaser-framework

解决方案


在当前状态下,PathFollower设置为仅接收单个 GameObject。不幸的是,这意味着您必须将您的群组项目一一添加到关注者。您可以设置一个循环来遍历您的组项目并创建路径跟随者,如下所示:

for (var i = 0; i < bola.children.entries.length; i++) {
  var mover = this.add.follower(path1, 0, 0, bola.children.entries[i].texture.key);

  mover.startFollow({
    positionOnPath: true,
    duration: 3000,
    yoyo: false,
    repeat: 0,
    rotateToPath: false,
    verticalAdjust: true
  });
}

查看Phaser 3 实验室中的这个示例,以查看另一个示例,如果组结构对您的游戏不重要,您可以如何使用具有相同路径的多个项目。


推荐阅读