Я получаю NullPoinerExecption при вызоверисования спрайтов в libgdx
enemy.getSprite().draw(batch);
Куда я должен инициализировать мой спрайт? Он работает в основном классе, но если я попытаюсь инициализировать текстуру и спрайт в конструкторе Enemy, то это даст мне ошибку.
Вот мой главный класс:
public class SpaceShooter implements ApplicationListener {
private SpriteBatch batch;
private Texture texture;
private Sprite sprite, spriteEnemy;
private Player p;
private Enemy enemy;
@Override
public void create() {
p = new Player();
enemy = new Enemy(spriteEnemy);
float w = Gdx.graphics.getWidth();
float h = Gdx.graphics.getHeight();
batch = new SpriteBatch();
texture = new Texture(Gdx.files.internal("craft.png"));
sprite = new Sprite(texture);
sprite.setPosition(w/2 -sprite.getWidth()/2, h/2 - sprite.getHeight()/2);
// Adding enemy sprite
}
@Override
public void dispose() {
batch.dispose();
texture.dispose();
}
@Override
public void render() {
Gdx.gl.glClearColor(1, 1, 1, 1);
Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
// moving sprite left and right
batch.begin();
sprite.draw(batch);
enemy.getSprite().draw(batch);
batch.end();
}
Enemy класс
public class Enemy {
private Sprite sprite;
private Texture texture;
boolean gameOver;
public Enemy(Sprite sprite){
this.sprite = new Sprite();
}
public Sprite getSprite(){
return sprite;
}
public void create() {
texture = new Texture(Gdx.files.internal("enemy.png"));
sprite = new Sprite(texture);
this.sprite.setPosition(100, 200);
}
вызов функции enemy.create() устраняет проблему. – RomZes
Также переместил весь мой код в конструкторы Player и Enemy. Спасибо за помощь! – RomZes