Sich bewegende Kamera

pmSave

Mitglied
Hallo mal wieder,
ich programmiere gerade ein kleines Super Mario Spiel mit Swing. Vorab: ich weiß, dass es
mit Hilfe diverser Programme und sonstigen deutlich einfacher werden könnte, aber ich habe es mir in den Kopf gesetzt alles mit Swing und den bereitgestellten Biblitheken und Klassen(Graphics etc.) selbst zu versuchen.
Hier mal eine Aufnahme wie es im Moment aussieht:
screen.png

Soweit so gut, laufen und springen funktioniert(ein paar details an der Animation fehlen noch).

Mein PROBLEM:
Wie schaffe ich es ein vollständiges Level zu erstellen? Wie kann ich eine, sich mitbewegende, "Kamera" implementieren wo man nach rechts und links laufen kann(bisher geht es nur in dem sichtbaren Bereich)?
Ich arbeite mit einem Timer, der alles neuzeichnet und der zu sehende Boden und die Testblöcke werden zum Start in einer Methode erstellt und einer festgelegten Position im Panel zugewiesen. Ich bin sicher einer von euch hat nh Idee 😉
Mfg
 
Zuletzt bearbeitet:
Ja Du hast in der Klasse Figur in der dritten Methode innerhalb der zweiten zweimal verschachtelten do-while-Schleife die lokalen integer Variablen k und j vertauscht... hth.
 
Wie kann ich eine, sich mitbewegende, "Kamera" implementieren wo man nach rechts und links laufen kann
Du hast ein Level. Du weißt, wo im Level Deine Figur steht. Du weißt, wo auf dem Bildschirm Deine Figur steht. Du weißt, wie breit Dein Fenster ist. Kurz: Du weißt, welchen Ausschnitt Deines Levels Du anzeigen musst.
 
Jetzt hast Du die Chance gehabt es umzusetzen. 😉 Sorry aber erklärt haben mihe7 und ich es. 🙂 frag uns bei gelegenheit bitte nochmal, wenn du gar keine herangehensweise weißt.... 🙁
 
ein Hinweis auf die Methode
Java:
 translate(int x, int y)
der Klasse Graphics oder Graphics2d wäre hilfreich gewesen(wenn ihr sie überhaupt kennt)
 
Ein Hinweis darauf, dass es Dir nur um eine Verschiebung geht, wäre hilfreich gewesen. Dann hätte ich mir den Hinweis auf den Ausschnitt gespart.
 
Um es mal kurz zusammenzufassen:
Swing ist für sowas eig. nicht geeignet, weil es immer alle Tiles zeichnet (unperformant) und keine Camera besitzt. Aber das nur nebenbei bemerkt.
Prinzipiell funktioniert Side Scrolling so, dass du ohne ein Kamera-Objekt (Swing) deine Tiles nach links schiebst.
Quasi verschiebst du nicht die Camera, wie es ein normales Spiel tun würde, sondern du verschiebst den Hintergrund (und alle anderen Objekte).

Also z.B.:
Java:
Image[][] map;//...

//current player position
int playerX = 100;

//draw map
for (int y = 0; y < map.length; y++) {
    for (int x = 0; x < map[0].length; x++) {
        //draw tile
        drawTile(map[y][x], x * tileWidth - playerX, y * tileHeight);
    }
}

Das Code-Beispiel ist jetzt aber frei erfunden und nicht getestet.
 

Neue Themen


Zurück
Oben