我不知道如何按照libgdx中的Y坐标按顺序渲染多个对象。
我有3个班,每个NPC一个班。有一个Human类,一个Orc类和一个Player类。
为了重新创建深度,我按Y从最高到最低排序我的人类列表,这样当它们被渲染时,我可以对模拟深度进行排序。 (这是一款2D游戏BTW)。使用Comparator工作正常。
我还为我的Orc列表使用了另一个比较器,以便它们也可以按Y顺序渲染。
然而我的问题是当人类和兽人重叠时,由于这两个列表是独立排序的,因此显然会打破深度。
可以以某种方式组合两个列表并将它们排序为一个以按顺序呈现所有NPC类型吗?
我无法理解,因为比较器只允许你使用1类。
答案 0 :(得分:1)
您可以创建共享的超类或所有类实现的接口。 该超类或接口需要有一个方法来检索Y坐标。
你说每个类都是一个NPC,所以你可以创建一个名为NPC
的超类:
public abstract class NPC {
public abstract int getY();
}
public class Human extends NPC { /* ... has a getY() method */ }
public class Orc extends NPC { /* ... has a getY() method */ }
然后你可以创建一个实现Comparator<NPC>
的类,根据他们的getY()
来比较NPC。