- Forum-Beiträge: 3
18.02.2019, 10:56:21 via Website
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();
}
}