微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

实体未在我的游戏中正确呈现

如何解决实体未在我的游戏中正确呈现

最近在开发一个游戏(我是初学者,但它是有组织的)。 我的问题是我在我的游戏中添加了一棵树(静态实体),并且我已经使用比较器制作了一个实体管理器来正确呈现它。它的代码可以在下面看到。

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 rendering in front of player

我不知道为什么会这样,或者这是否是一个错误。 如果您想要任何其他详细信息或源代码,请告诉。 谢谢

解决方法

我认为您的代码组织的程度没有问题。 这里的问题出在比较函数中,因为:

tree height + tree y > player height + player y

但是因为石头比玩家小,所以它会被放在前面,因为你涉及到物体的高度,所以它给出了这个:

rock y < player y

但是

rock height + rock y> player height + player y

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。