我想根据其他对象的 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 an
interfaceor
(摘要)class` 任意名称,只需将名称替换为与您的代码匹配的名称即可。
在我的游戏中,我有玩家、敌人和敌人掉落的升级。
首先渲染升级,然后是玩家,然后是敌人,但我希望我的玩家在 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 an
interfaceor
(摘要)class` 任意名称,只需将名称替换为与您的代码匹配的名称即可。