我正在使用移相器处理基于磁贴的自上而下的游戏,而且我在解决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
排序,也不做任何事。虽然我想使用三组方法,只是简单地在组之间移动精灵,但我担心当有数百个精灵需要移动时,解决方案可能会很麻烦。
还有什么我可以尝试的吗?