2014-09-27 2 views
0

У меня есть спрайт, который пересекает другой спрайт, и когда это произойдет, я хочу удалить первый спрайт, чтобы его нельзя было увидеть или не взаимодействовать. В настоящее время я рисую текстуру, а затем рисую прямоугольник в одном и том же месте, чтобы я мог взаимодействовать для прямоугольника. Вместо этого я мог бы использовать «спрайт».Удалить спрайты Libgdx Java

Проблема:

Я не знаю, как я могу удалить спрайт, так что он не может видеть и не может быть взаимодействовали с. Я также хочу, чтобы иметь возможность сделать это по-другому, а не там, чтобы видеть и взаимодействовать с ним. Есть идеи?

ответ

0

Существует множество способов достижения желаемого. Я также не знаю, о чем вы спрашиваете. Вы хотите временно отключить Sprite? Или вы хотите полностью удалить спрайт?

Чтобы временно отключить спрайт можно сделать следующим образом:

public class Entity extends Sprite{ 

    private boolean visible; 

    **Constructor and other methods** 

    public void setVisible(boolean visible){ 
     this.visible = visible; 
    } 

    public boolean isVisible(){ 
     return visible; 
    } 

} 

В вашем обновлении/рендеринга метод:

Array<Entity> entities = new Array<Entity>(); 
entities.add(...sprite/entity1, sprite/entity2); 

for(Entity entity : entities){ 

    if(entity.isVisible()){ 
     entity.update(delta); 
     entity.draw(batch); 
    } 
} 

, если вы хотите, чтобы полностью удалить Sprite:

public class Entity extends Sprite{ 

    private boolean remove = false; 

    **Constructor and other methods** 

    public void remove(){ 
     remove = true; 
    } 

    public boolean shouldRemove(){ 
     return remove; 
    }   
} 

В вашем методе update/render:

Array<Entity> entities = new Array<Entity>(); 

for(int i = 0; i < entities.size; i++){ 
    entities.get(i).update(delta); 
    entities.get(i).draw(batch); 
    if(entities.get(i).remove()){ 
     entities.removeIndex(i--); 
    } 
} 
Смежные вопросы