libGdx displayabfrage funktioniert nicht richtig

  • Antworten:0
  • OffenNicht stickyNicht beantwortet
  • Forum-Beiträge: 3

18.02.2019, 10:56:21 via Website

hallo,

ich bin grade dabei ein 2D spiel in form von moorhuhn mittels gdx zu programmieren, jedoch hab ich anscheinend ein missverständniss
mit der display größen abfrage.

Und zwar sollen die zielscheiben von links nach rechts "gleiten" und sobald sie rechts aus dem bildschirm sind sollen sie bei 0 links wieder anfangen, was jedoch nicht funktioniert bevor alle zielscheiben rechts durch sind, der code ansich ist richtig aber funktioniert nicht so wie es soll / muss, denn wenn ich die "Gdx.graphics.getWidth()" von zb der zielscheibe 1 in der if abfrage auf "Gdx.graphics.getWidth() / 2" setzte funktioniert alles nur das die erste zielscheibe sich dann schon in der hälfte des bildschirmes resetet und die andere so wie sie soll, am ende des bildschirms.. daher muss doch der code stimmen?

Normalerweise find ich meine probleme für den maximalen leneffekt selber bzw suche sie eigenständig, aber nach 1 1/2 tagen wirds mir dann zuviel, leider kann man hier nicht manuell mittels sysouts debuggen um den fehler im log zu finden da der emulator sich aufhängt und auf dem handy kein log field vorhanden ist, egal...

Danke schonmal, ich weine in der zeit schonmal weiter.

SpriteBatch batch;
Texture startButton, background;

Texture[] ziel;

int a = 0;
int trigger1 = 0, trigger2 = 0, trigger3 = 0, trigger4 = 0, trigger5 = 0, trigger6 = 0, trigger7 = 0, trigger8 = 0;
float xAchse1 = 0, xAchse2 = 0, xAchse3 = 0, xAchse4 = 0, xAchse5 = 0, xAchse6 = 0, xAchse7 = 0, xAchse8 = 0;

float yAchse = 0;


@Override
public void create () {
    batch = new SpriteBatch();
    startButton = new Texture("start.jpg");
    background = new Texture("hintergrund.jpg");

    //Alle zielscheiben
    ziel = new Texture[8];
    ziel[0] = new Texture("ziel1.jpg");
    ziel[1] = new Texture("ziel2.jpg");
    ziel[2] = new Texture("ziel3.jpg");
    ziel[3] = new Texture("ziel4.jpg");
    ziel[4] = new Texture("ziel5.jpg");
    ziel[5] = new Texture("ziel6.jpg");
    ziel[6] = new Texture("ziel7.jpg");
    ziel[7] = new Texture("ziel8.jpg");

}

@Override
public void render () {


    batch.begin();
    batch.draw(background,0,0, Gdx.graphics.getWidth(), Gdx.graphics.getHeight() );

    //falls der bildschirm berührt wird, wird a auf 1 gesetzt was den startbutton verschwinden lässt und das spiel beginnt
    if(Gdx.input.isTouched()){
        a = 1;
    }

    //Eigentliche spiel fängt hier an
    if(a == 1){

        //1. zielscheibe
        //falls die position von der zielscheibe rechts ausserhalb des bildschirms ist soll die x position der zielscheibe auf 0 gesetzt werden
        if (xAchse1 > Gdx.graphics.getWidth() ){
            xAchse1 = 0;
            trigger1 = 1;
        }

        else{
            //falls die zielscheibe das erste mal zu sehen ist startet sie mit einem erhöhten wert auf der X achse danach immer bei 0
            if(trigger1 == 0) {
                batch.draw(ziel[0], xAchse1 + 200, yAchse + 60, 100, 100);
            }
            else{
                batch.draw(ziel[0], xAchse1, yAchse + 60, 100, 100);
            }
            }
            //Zielscheibe wird verschoben um 10 einheiten
        xAchse1 += 10;


        //2. zielscheibe
        if (xAchse2 > Gdx.graphics.getWidth() ){
            xAchse2 = 0;
            trigger2 = 1;

        }

        else{
            if(trigger2 == 0) {
                batch.draw(ziel[1], xAchse2, yAchse + 200, 100, 100);
            } else{
                batch.draw(ziel[1], xAchse2, yAchse + 200, 100, 100);
            }
        }
        xAchse2 += 10;


    }else{
        //startbutton
        batch.draw(startButton, Gdx.graphics.getWidth() / 2 - startButton.getWidth() / 2, Gdx.graphics.getHeight() / 2 - startButton.getHeight() / 2);
    }

    batch.end();


}

@Override
public void dispose () {
    batch.dispose();
    startButton.dispose();
}

}

Beantworte die Frage als Erster