Класс Libgdx не рисует текстуру - PullRequest
0 голосов
/ 13 марта 2019

Я пытаюсь нарисовать игрового персонажа в своем классе "MainGameScreen.java" из класса "germans.java", когда я касаюсь экрана моего телефона.
К сожалению, моя программа не рисует изображение и не делает его дай мне предупреждение или ошибку.

MainGameScreen.java:

import com.daenni.trenchwarfare.mygdx.enteties.germans;

public class MainGameScreen implements Screen, InputProcessor {

Trench_Warfare game;


public SpriteBatch batch;

//Enemies
ArrayList<germans> german;

public MainGameScreen (Trench_Warfare game) {
    this.game = game;
    batch = new SpriteBatch();

    //Enemies
    //Initialise Array
    german = new ArrayList<germans>();
}

@Override
public void render(float delta) {

    //Colours
    Gdx.gl.glClearColor(116/255f,102/255f,91/255f,1);
    Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);

    //Create Germans

    if (Gdx.input.justTouched()){
        german.add(new germans(300));
        german.add(new germans(400));
    }

    //Update Germans
    for (germans german : german) {
        german.update(delta);
    }

    game.batch.begin();


    //Render Germans
    for (germans germans : german) {
        germans.render(game.batch);
    }

    //Background
    game.batch.draw(background,0,0);
    game.batch.draw(background_links,-background_links.getWidth(),0);
    game.batch.draw(background_rechts,background.getWidth(),0);

    game.batch.end();
}

Это весь код, который я использую для его рендеринга в файле "MainGameScreen.java".

Это мой класс:

public class germans {
    //Set speed
    public static final int speed = 25;

    //Constant
    public static final int default_x = 300;

    //Every german uses the same Texture
    private static Texture texture;

    //Position
    float x, y;

    public boolean remove = false;

    //Create german
    public germans(float y) {
        this.x = default_x;
        this.y = y;
        y = 200;

        if (texture == null) { //When texture is never loaded
            //Set Texture
            texture = new Texture("de_s1_default.png");
        }
    }

    public void update (float deltaTime){
            x += speed * deltaTime;
    }

    public void render (SpriteBatch batch) {
        batch.draw(texture,x,y);
    }

}

1 Ответ

1 голос
/ 13 марта 2019

Хотя я не заинтересован в том, как именно работает libgdx, я уверен, что сначала нарисую ваши «немцы», а затем фон не тот, который вы хотите.

Попробуйте поменять местами:

//Background
game.batch.draw(background,0,0);
game.batch.draw(background_links,-background_links.getWidth(),0);
game.batch.draw(background_rechts,background.getWidth(),0);

    //Render Germans
for (germans germans : german) {
    germans.render(game.batch);
}
...