【问题标题】:Multiple class object render order多类对象渲染顺序
【发布时间】:2016-01-07 04:10:03
【问题描述】:

我不知道如何在 libgdx 中按 Y 坐标顺序渲染多个对象。

我有 3 个班级,每个 NPC 一个。有一个 Human 类、一个 Orc 类和一个 Player 类。

为了重新创建深度,我按 Y 从高到低对人类列表进行了排序,这样当它们被渲染时,我就可以模拟深度。 (顺便说一句,这是一个 2D 游戏)。使用 Comparator 效果很好。

我还为我的 Orc 列表使用了另一个比较器,以便它们也可以按 Y 顺序呈现。

但是我的问题是,当人类和兽人重叠时,由于这两个列表是独立排序的,它们显然会破坏深度。

能否以某种方式组合这两个列表并将它们排序为一个以按顺序呈现所有 NPC 类型?

我无法弄清楚,因为比较器只允许您使用 1 个类。

【问题讨论】:

    标签: java list libgdx render


    【解决方案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。

    【讨论】:

    • 非常感谢欧文!我确实有一个所有 NPC 都派生自的超类。由于我格式化所有内容的方式,必须进行大量重构,但您的方法运行良好!
    • 这是一个很好的答案,但我认为在游戏实体设计中,应该优先考虑组合而不是继承。
    猜你喜欢
    • 2013-07-05
    • 1970-01-01
    • 2018-03-16
    • 2011-08-16
    • 1970-01-01
    • 1970-01-01
    • 2019-02-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多