我想根据其他对象的 y 坐标渲染对象

I want to render objects depending on other objects y coords

在我的游戏中,我有玩家、敌人和敌人掉落的升级。

首先渲染升级,然后是玩家,然后是敌人,但我希望我的玩家在 Y 值大于玩家的物体后面,我希望我的玩家在 Y 值比玩家小的物体前面Y值比玩家.

好的,好的。这是我的渲染 class.

package main;

import java.awt.Graphics;

import javax.swing.JPanel;

@SuppressWarnings("serial")
public class Render extends JPanel {
    public Game game;

    public Render(Game game) {
        this.game = game;
    }

   protected void paintComponent(Graphics g) {
        game.world.render(g);
        game.tile.render(g);

        game.upgrade.render(g);

        game.player.render(g);
        game.bullet.render(g);
        game.gun.render(g);
        game.sword.render(g);

        game.soldier.render(g);
        game.blood.render(g);

        game.hud.render(g);
    }

}

我不知道该怎么做。如果有人能给我一些示例代码,那就太棒了。

同样,我想做的是在 Y 值较小的对象前面渲染 Y 值较大的对象。

我也没有在 Stack Overflow 上找到任何我能很好理解的内容。

谢谢。

这很简单:按 y 坐标降序对所有对象(包括玩家)进行排序。并按此顺序渲染它们。

public void render(Graphics g){
    List<ElementType> elements = new ArrayList<>();
    elements.add(player);
    elements.add(title);
    ...

    //sort the list such that elements with higher y-value at lower indices than elements
    //with lower y-value
    Collections.sort(elements , (a , b) -> Integer.compare(b.getY() - a.getY());

    for(ElementType element : elements)
        element.render(g);
}

注意这里要求所有渲染的元素都继承自ElementType,需要实现getY()render(Graphics).ElementTypecan either be aninterfaceor (摘要)class` 任意名称,只需将名称替换为与您的代码匹配的名称即可。