javascript - 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
是玩家起始图块,其中具有z
2 的玩家生成。
不幸的是,玩家出现在瓷砖后面。
在这里使用移相器中相当无用的示例,似乎有一个内置选项可以通过对象和玩家的y
值进行排序,但是该示例会物理移动玩家,而在我的游戏中,我使用补间来捕捉玩家到瓷砖。
- 手动将播放器设置
z
为 100 不起作用。值得注意的是,从任何组中移除玩家和对象并将前者设置z
为 100,将后者设置为 0,如果对象稍后创建/绘制,仍然会使对象出现在顶部。这是否意味着 Phaser 中没有(简单的)Z 排序? - 对它进行排序
y
并不能解决问题,甚至会引入另一个问题:向下移动角色会将其置于地砖后面,而此时它应该在顶部。 - 相反,对其进行排序
z
也无济于事。
虽然我想使用三组方法,并简单地在组之间移动精灵,但我担心当可能有数百个精灵需要移动时,解决方案可能会变得很麻烦。
还有什么我可以尝试的吗?
解决方案
推荐阅读
- google-maps - 如何确认在 google Places API 中使用了会话令牌
- python - 如何检查 for 循环中的下一次迭代?
- angularjs - AngularJS http POST 需要大量时间来加载数据
- c# - 使用 Invoke 时操作值不会更新实例
- python - 有一个类的关键检查
- python - 计算句子中两个单词同时出现的频率
- node.js - 试图运行我的 index.js 文件,但它不工作
- python - 如果我有视频 ID,如何获取 TikTok 无水印视频网址?
- django - 为什么列表的元素不在同一个结构中?
- python - '.' 有什么用?在 python 导入语句中