public class Player {
private Sprite enemy;
public Rectangle bounds;
private SpriteBatch batch;
private float deltaTime;
private float timer;
private ArrayList<Sprite> enemies;
private Iterator<Sprite> enemyIterator;
private ArrayList<Vector2> posCoordinate;
Sprite newEnemy;
public void create(){
batch=new SpriteBatch();
timer=0;
enemy=new Sprite(new Texture(Gdx.files.internal("spr_player.png")));
bounds=new Rectangle(200,700,82,80);
enemies=new ArrayList<Sprite>();
posCoordinate=new ArrayList<Vector2>();
newEnemy=Pools.obtain(Sprite.class);
}
public void update(){
deltaTime=Gdx.graphics.getDeltaTime();
enemyIterator=enemies.iterator();
timer+=1*deltaTime;
if(timer>=1f){
newEnemy(); //method called every second
timer-=1;
}
}
public void newEnemy(){
Vector2 position=Pools.obtain(Vector2.class); //vector2 is created for each enemy every second.
position.set(200,700);
posCoordinate.add(position);
newEnemy=Pools.obtain(Sprite.class); //enemy created every second
newEnemy.set(enemy);
enemies.add(newEnemy);
}
public void draw(SpriteBatch batch){
//this is where the enemy position is set and movement
for(Sprite enemy:enemies){
enemy.draw(batch);
}for(Vector2 position:posCoordinate){
newEnemy.setPosition(position.x,position.y);
position.y-=2;
}
}
}
newEnemy()
метод вызывается каждый второй, поэтому новый спрайт визуализируется каждый второй.libgdx Временное движение спрайтов после порождал
В основном, что я пытаюсь сделать, так это то, что когда появляется новый враг, он должен двигаться вниз, пока он не выходит за пределы экрана. Но происходит то, что враг будет двигаться только на одну секунду.
Я новичок в объединении, когда я удаляю Sprite и верну их обратно в бассейн, как мне снова использовать спрайты внутри бассейна? и что это делает // Sprite newEnemy = Pools.obtain (Sprite.class); –
Pools.obtain (Sprite.class); вытаскивает спрайт из бассейна для вас. Если пул пуст, он автоматически создает новый Sprite и дает вам это. Вы не знаете, является ли спрайт, который вы получаете, новым или переработанным, поэтому обязательно обязательно установите его область и положение текстуры. – Tenfour04
Так что вам не нужно писать дополнительный код, он автоматически перерабатывает спрайты?Спасибо за ваши ответы, очень полезно. –