【发布时间】:2021-03-31 06:30:23
【问题描述】:
最近一直在开发一款游戏(我是初学者,但是很有条理)。 我的问题是我在我的游戏中添加了一个树(静态实体),并且我已经制作了一个实体管理器来使用比较器正确渲染它。它的代码可以在下面看到。
public class EntityManager {
private Handler handler;
private Player player;
private ArrayList<Entity> entities;
private Comparator<Entity> renderSorter = new Comparator<Entity>() {
@Override
public int compare(Entity a, Entity b) {
if(a.getY() + a.getHeight() < b.getY() + b.getHeight()) {
return -1;
}
return 1;
}
};
public EntityManager(Handler handler, Player player) {
this.handler = handler;
this.player = player;
entities = new ArrayList<Entity>();
addEntity(player);
}
public void tick() {
Iterator<Entity> it = entities.iterator();
while(it.hasNext()) {
Entity e = it.next();
e.tick();
//if(!e.active)
//it.remove();
}
entities.sort(renderSorter);
}
public void render(Graphics g) {
for(Entity e : entities) {
e.render(g);
}
//player.postRender(g);
}
public void addEntity(Entity e) {
entities.add(e);
}
虽然树像这样正确渲染Tree rendering behind the player
但是我添加的一个新实体(一个 Rock)没有正确渲染,比如 thisrock rendering in front of player
我不知道为什么会这样,或者这是否是一个错误。 如果您需要任何其他详细信息或源代码,请告诉。 谢谢
【问题讨论】:
标签: java rendering comparator game-development