Parallax Scrolling

Kenan89

Bekanntes Mitglied
Hallo,
wie der Name sagt, möchte ich, dass die Map mit scrollt.
Ich habe leider überhaupt keinen Ansatz und habe auch keine Tutorials für Java bzgl. dieser Thematik gefunden.

Danke für Hilfen im voraus.
 

fastjack

Top Contributor
Ich kenne Parallax-Scrolling nur aus 2d-Sidescrollern (Turrican, Uridium, ...). Du verschiedene Scrollbereiche, z.B. vorne, mitte und hinten, die scrollen verschieden schnell, oder auch in verschiedene Richtungen (links-rechts) usw. Google ist doch voll damit...
 

Kenan89

Bekanntes Mitglied
die map soll ja horizontal und vertical bis zu einer Obergrenze scrollbar sein. (Die Spielkarten von mir haben nämlich Grenzen, z.b. in einem großen haus, der so lange scrollt bis man gegen eine wand läuft.)
 

Kenan89

Bekanntes Mitglied
Hier noch einmal in Bild, was ich meine:

rbnq43sp.png


Der dunkelgrüne Bildschirm ist der Bereich der Kamera. Die soll mit bewegung der Figur nach rechts mit nach rechts rücken.
 

fastjack

Top Contributor
Das ist aber kein Parallaxscrolling, sondern normales.

Beim Parallax hast Du z.B. sowas:

Code:
|------------------------------|
| Bereich 1                    |
|------------------------------|
|                              |
| Bereich 2                    |
|                              |
|------------------------------|
| Bereich 3                    |
|------------------------------|

* Bereich 1 scrollt ganz langsamen und bezeichnet Objekte, die weit weg sind, z.B. Horizont oder sowas
* Bereich 2 ist meistens der Bereich in dem der Spieler unterwegs ist. Hier wird normales Scrolling verwendet, der Spieler sieht also einen Auschnitt einer Map oder so
* Bereich 3 wird schnell gescrollt. Hier werden ganz nahe Objekte dargestellt.

* 1 und 3 laufen in eigenen Threads und man kann ganz einfach entsprechende Bilder durchschieben
 

Kenan89

Bekanntes Mitglied
es läuft allerdings so:
es wird intern mitte des anzeigebildschirm errechnet.
übersteigt held die mitte, so geht er rechts.
entfernt er sich von der mitte dann links.
die differenz zur mitte kann ich ja ermitteln.
x-Koordinaten aller Objekte werden dann um diese differenz korrigiert.
auch die x-y Koordinaten der Spielkarte wird dann entsprechend verschoben.

So ist es möglich dass der Anzeigebildschirm nur 800*600 ist, die Spielmap aber
1600*1500.

Zu beachten ist allerdings, dass der Held eine globale UND lokale Position hat.

Lokal, die Position im Anzeigebildschirm.(800*600)
Global, die Position auf der Karte.(1600*1500)

Diese Werte sind später für die Kollisionsberechnung wichtig, denn
da muss mit globalen XY Koordinaten gerechnet werden.

Sollte es einen besseren Ansatz geben, nur zu.
 
Zuletzt bearbeitet:

Kenan89

Bekanntes Mitglied
Ich denke, das ist auch die gängige Methode in der 2D-Spiele Industrie. Im Prinzip braucht man den Codeblock für das x-y-Scrollen der Spielkarte nur einmal schreiben und kann sie immer wieder verwenden.
 

Kenan89

Bekanntes Mitglied
Jetzt klappt das alles soweit ganz gut.
Ein kleines Problem ist, da ich ja mit Slick arbeite, dass ich für x-y-Koordinaten float eingeben muss.
Float enthält aber minimale Abweichungen, denn es ändert zum Teil sinnlos seinen Wert von 100 zu 99,99954 z.B.. Hindert das denn nicht für z.B. Kollisionsberechnungen, oder ist eine so minimale Abweichung nicht von Bedeutung?

Ich kann auch nicht auf integer zurückgreifen, weil die update methode alle 15 ms(oder?) aufgerufen wird
und eine bewegung ausführt, falls der Spieler eine Pfeiltaste gedrückt hat. Bei integer +1 alle 15 Sekunden wären das 67 px in eine Richtung pro Sekunde.
Mit float sind nur 7 px, da man hiermit Werte wie 0.1 eingeben kann.

EDIT:
Wie kann Slick eigentlich ein Bild zeichnen, wo der Abstand nicht 1 ist, also 1 px, sondern 0.1 ist.Der Computer kann doch nur pixelweise voran gehen, oder zählt er 10*0,1 und zeichnet dann das bild 1 px weiter?
Ausserdem, wenn ich das Game exportiere kann ich es nicht starten. Es passiert einfach gar nichts nach dem Doppelklick. Ich exportiere schon als Runnable Jar.
 
Zuletzt bearbeitet:

Kenan89

Bekanntes Mitglied
Was mich auch interessieren würde, zu sehen, wie es erfahrenere Spieleprogrammierer machen.
Kennt ihr einige Open Source Java 2D Spiele? Vorerst 2D. An 3D trau ich mich noch nicht.
 

Fu3L

Top Contributor
Natürlich sagt die Grafikkarte: Das Objekt ist bei 0.5, also bei 1 (oder 0?) und fertig, das fällt niemandem auf. Im nächsten Schritt gehts vllt +0.5 auf 1 und dann ist auch das mit eingeflossen.

Bei Java2D Spielen kenn ich direkt keins, such einfach bei Google.
 


Schreibe deine Antwort... und nutze den </> Button, wenn du Code posten möchtest...

Ähnliche Java Themen


Oben