【问题标题】:Display child sprite behind parent sprite with Phaser使用 Phaser 在父精灵后面显示子精灵
【发布时间】:2015-01-13 20:51:15
【问题描述】:

是否可以使用 Phaser 在父精灵后面显示子精灵?我想通过渲染一个填充的绿色圆圈并将其粘贴在父精灵后面来围绕我的精灵绘制一个环。我知道我可以为此使用一个组,但我希望父精灵受到物理影响,并且不知道如何将其与组使用相协调。

这是我的问题的一个 jsfiddle:http://jsfiddle.net/omm0vvfv/

<script src='https://rawgit.com/photonstorm/phaser/master/build/phaser.js'></script>
<script>
var game = this.game = new Phaser.Game(800, 400, Phaser.AUTO, '', {
  create: function() {
    game.physics.startSystem(Phaser.Physics.ARCADE);

    var main_sprite = game.add.sprite(200, 200, 'foo-sprite')
    main_sprite.anchor.setTo(.5, .5)
    game.physics.arcade.enable(main_sprite)
    main_sprite.body.gravity.y = 30

    var bmd = this.game.make.bitmapData(main_sprite.width * 2, main_sprite.width * 2)
    bmd.circle(bmd.width * .5, bmd.width * .5, main_sprite.width, '#0000ff')
    var ring_sprite = this.game.make.sprite(0, 0, bmd)
    ring_sprite.anchor.setTo(.5, .5)

    // I can get the ring behind the sprite like this, but it doesn't stick.
    var group = game.add.group()
    group.add(ring_sprite)
    group.add(main_sprite)
    ring_sprite.x = main_sprite.x
    ring_sprite.y = main_sprite.y

    // If I do this it sticks, but I can't get it behind the sprite.
    // main_sprite.addChild(ring_sprite)
  }
})

</script>

编辑:我意识到我可以在更新函数中将环位置设置为主要精灵的位置:http://jsfiddle.net/jqto6z72/

但是我还有另一个问题。如您所见,环似乎有点落后于精灵。所以它被渲染得比它应该的略高。我认为这是因为在我设置环的位置后物理会更新。有没有办法在物理更新之后渲染之前设置环的位置?

【问题讨论】:

    标签: phaser-framework


    【解决方案1】:

    如果您需要将手动对象同步到基于物理的对象,那么我建议您在您的 State 的 preRender 方法中执行此操作。在状态更新完成处理后,但在渲染之前立即调用它。

    【讨论】:

      猜你喜欢
      • 2017-05-27
      • 1970-01-01
      • 1970-01-01
      • 2018-03-21
      • 2014-08-26
      • 2018-05-27
      • 1970-01-01
      • 1970-01-01
      • 2015-05-22
      相关资源
      最近更新 更多