首页 > 解决方案 > Phaser:Z 排序不起作用

问题描述

我正在使用移相器开发基于图块的自上而下的游戏,但在使 z 顺序正常工作时遇到问题。

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

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;

具有 1 的次要对象z是玩家起始图块,其中具有z2 的玩家生成。

不幸的是,玩家出现在瓷砖后面。

在这里使用移相器中相当无用的示例,似乎有一个内置选项可以通过对象和玩家的y值进行排序,但是该示例会物理移动玩家,而在我的游戏中,我使用补间来捕捉玩家到瓷砖。

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

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

标签: javascriptphaser-framework

解决方案


推荐阅读