Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 我希望根据其他对象y坐标渲染对象_Java_Object_Render - Fatal编程技术网

Java 我希望根据其他对象y坐标渲染对象

Java 我希望根据其他对象y坐标渲染对象,java,object,render,Java,Object,Render,在我的游戏中,我有一个玩家、敌人和敌人掉落的升级 升级首先呈现,然后是玩家,然后是敌人,但我希望我的玩家在Y值大于玩家的对象后面,我希望我的玩家在Y值小于玩家的对象前面 好,好。这是我的渲染类 package main; import java.awt.Graphics; import javax.swing.JPanel; @SuppressWarnings("serial") public class Render extends JPanel { public Game ga

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

升级首先呈现,然后是玩家,然后是敌人,但我希望我的玩家在Y值大于玩家的对象后面,我希望我的玩家在Y值小于玩家的对象前面

好,好。这是我的渲染类

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值的对象。

我也没有在堆栈溢出上找到任何我能很好理解的东西


谢谢。

这很简单:按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);
}
public void渲染(图形g){
列表元素=新的ArrayList();
元素。添加(玩家);
增加(标题);
...
//对列表进行排序,使y值较高的元素的索引比元素的索引低
//具有较低的y值
Collections.sort(元素,(a,b)->Integer.compare(b.getY()-a.getY());
for(ElementType元素:元素)
元素。渲染(g);
}

请注意,这要求呈现的所有元素都继承自
ElementType
,这需要实现
getY()
render(图形)。
ElementType
可以是
接口
(摘要)class`使用任意名称,只需将名称替换为与您的代码匹配的名称。

如果您能告诉我们问题的重要细节并显示相关代码,您的问题会更好。这些细节包括您正在使用的GUI库,您当前呈现项目的方式。如果使用Swing,则呈现顺序非常重要ant并将确定图像的z顺序。您绘制的第一个对象将位于底部,第二个对象将位于顶部。因此,请根据需要构造您的绘制逻辑。是的,这听起来像是我想要的,但我不知道如何做到这一点。这是我第一次。对如何进行编码有任何建议吗?将所有元素添加到
集合
,对其排序(
Collections.sort(…)
),并按给定顺序呈现生成的
Collection
。我将编辑帖子