我的游戏非常先进,但这些天我遇到了一个问题,我无法解决...
我有一个迷宫和一个角色。对于迷宫的每一行,我为舞台演员定义一个组,并在该组中放入该行的每个演员(例如墙)。
之后,我以一组数组(Group[] layers)
结束,其数量等于迷宫中的行数,并将每个组放在我的舞台上。
在此之前,它完美地工作,我的墙壁被绘制,我的角色也被绘制,并且由于该层,他的头部出现在第一排墙壁的后面。
但是当我的角色改变了行时,我想改变他的“层”,所以它在舞台上的顺序。
我的想法是:
layers[previousRowOfTheCharacter].removeActor(this);
layers[newRowOfTheCharacter].addActor(this);
这就是问题... AddActor显然在添加之前删除了actor。问题是我的角色永远不会在舞台上添加,因为他没有被画出来。
快速总结:
static Group[] layers = Group[numberOfRows];
Stage stage = new Stage();
添加要通过图层绘制的所有actor
layers[row].addActor(); (works)
通过添加阶段中的所有组
stage.addActor(group); (works)
当角色更改行时:
layers[previousRow].removeActor(this);
layers[newRow].addActor(this);
(不起作用,角色消失)
我不能使用stage.addActor,因为它不允许我订购演员。我通过比较器读到它是可能的,但它似乎仍然是一个大混乱。我试过了,我现在的方式对我来说更清楚了。
有人有解决方案吗?
非常感谢您的回答。
答案 0 :(得分:0)
我个人不明白为什么你的设置不起作用,但我建议的解决方法是使用Z-index的演员代替。
LibGDX中的 Actors
有z-index,其中较高的一个在较低的一个上面绘制,您可以通过将每个Group
设置为具有基于哪一行的某个z-index来使用它它是并且让玩家Actor
独立并且具有与其所在的行对应的z索引。