Phaser:Z-ordered不工作

时间:2018-05-09 11:16:47

标签: javascript phaser-framework

我正在使用移相器处理基于磁贴的自上而下的游戏,而且我在解决z顺序问题时遇到了问题。

我已将我的对象和播放器放入一个spawner类中,代码如下:

for(var i = 0; i < this.mapFile.objects.length; i++) {
  if (this.mapFile.objects[i] === CONST.TILE.OBJECT.WALL) {
    var gridTile = this.grid.getTileAtIndex(i);
    if (gridTile.tileBaseObj) {
      var wall = new Wall(this.game, gridTile.x, gridTile.y, null, gridTile);
      gridTile.tileBaseObj.z = 2;
      this.group.add(gridTile.tileBaseObj);
    }
  }
  else if (this.mapFile.objects[i] === CONST.TILE.OBJECT.START) {        
    var gridTile = this.grid.getTileAtIndex(i);
    if (gridTile.tileBaseObj) {
      var startObj = new FloorObject(this.game, 'gridSampleStartPoint', gridTile, null);
      gridTile.tileBaseObj.z = 1;
      this.group.add(gridTile.tileBaseObj);
    }
  }
}

this.player = new Player(this.game, 'prohyasIdle', this.playerStartTile);
this.player.z = 2;

z为1的辅助对象是玩家开始牌,其中z为2的牌手会产生。

不幸的是,播放器出现在磁贴后面。

使用来自移相器here的相当无用的样本,似乎有一个内置选项可以通过对象&#39;来排序。和玩家的y值,但该示例在物理上移动玩家,而在我的游戏中我使用补间将玩家捕捉到牌。

  • 将播放器的z手动设置为100无法正常工作。值得注意的是,从任何组中移除玩家和对象并将前者z设置为100,后者为0,如果稍后创建/绘制对象,仍会使对象出现在顶部。这是否意味着Phaser中没有(简单的)Z顺序?
  • y对其进行排序并不能解决问题,甚至还会引入另一个问题:将字符向下移动会将其放在地板砖后面,当它应位于顶部时。
  • z排序,也不做任何事。

虽然我想使用三组方法,只是简单地在组之间移动精灵,但我担心当有数百个精灵需要移动时,解决方案可能会很麻烦。

还有什么我可以尝试的吗?

0 个答案:

没有答案