Java 我希望根据其他对象y坐标渲染对象
在我的游戏中,我有一个玩家、敌人和敌人掉落的升级 升级首先呈现,然后是玩家,然后是敌人,但我希望我的玩家在Y值大于玩家的对象后面,我希望我的玩家在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
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
。我将编辑帖子