TiledMap "langsam" verschieben

Xym13

Mitglied
Hallo zusammen,

ich würde gerne wissen, ob es möglich ist den Ausschnitt einer TiledMap langsamer zuverschieben.

Im Moment wird diese so gezeichnet:
Java:
map.render(0, 0, Main.dx, Main.dy, 400, 300);
dx, und dy sind die Variablen, um wieviel die Karte verschoben wird. Also wenn man z.B. "w" drückt wird dy um 1 verringert.
Der Spieler wird dabei genau in die Mitte der Karte gezeichnet.

Wenn ich die jetzt aber verschieben, passiert das halt sehr unschön. Kann man den Vorgang des Verschiebens langsamer darstellen?
 
ist das Awt, Slick2d, ...?
Wie sind allgemein deine Bildraten, wie oft wird neu gezeichnet?

Ein paar mehr Infos wären gut,
nur an dem Aufruf sieht man nicht wirklich viel und Ruckeln selbst kann ziemlich viele Ursachen haben.

Gruß
 
Ich denke, er fragt sich, ob man den Bildausschnitt auch langsamer als 1 Pixel pro Frame bewegen kann, weil Bildschirminhalte ja immer in ganzen Pixelzahlen gezeichnet werden.

Ja.

Du könntest dir eine x und y double-Variable anlegen, diese z.B. um 0.2 pro Frame in die entsprechende Richtung anpassen und dann zum Zeichnen nach int casten.
 
Also,

ich nutze Slick AE. FramRate liegt bei ca. 60 Frames.

Das Problem ist, dass die Methode render nur Integers erlaubt. Die Verschiebung wird über die 3. und 4. Variable gesteuert.

Wenn Main.dx = 1 ist, dann wird die Map um 16 Pixel verschoben, da die Kachelgröße bei der Map 16x16 groß ist. Daher sind Dezimalzahlen keine Lösung...
 
Also verschiebst du Kachelweise, hast du nicht die Möglichkeit pixelweise zu verschieben?
So das dx=1 -> 1 Pixel unterschied?

Gruß
 
Na du hast dass doch programmiert?

Wenn du es mit Tileweise hinbekommst, dann schaffst dass ja auch Pixelweise.
Du musst eben einfach wie gesagt aus den int für die Verschiebung floats machen.
Dann bei der Stelle eben wo du die einzelnen Tiles (Bilder) zeichnest,
den float zurückcasten. Eben (int)verschiebung.

Im Prinzip ist es ja dasselbe, es wird immer pixelweise gezeichnet,
bloß kann man die Verschiebung entsprechend berechnen.
Und wenn du sie tileweise berechnest ist sie eben = Verschiebung in Tiles * Tilegröße in Pixel
Jetzt rate mal wie man dann Pixelweise berechnet 😀


Aber so wie sich das anhört gibt es deine render Methode
schon vorgegeben, oder jemand anderes hat sie gemacht?
Such doch einfach bei der map und änder die Methode entsprechend ab.


Sonst wüsstest du ja wie du sie ändern kannst, wenn du
sie ja schon erstellt hättest.
 
Was habt ihr alle mit floats? ???:L Solange man nicht mehr code hat, und nicht mal weiß, was die gepostete Methode macht, kann man lange rumraten...
 
Was habt ihr alle mit floats? ???:L Solange man nicht mehr code hat, und nicht mal weiß, was die gepostete Methode macht, kann man lange rumraten...

Ich kenne mich mit Slick AE speziell nicht aus, aber das "normale" Slick kann auf alle Fälle mit float-genauigkeit rendern (intern dann wohl doch nicht so genau wie ich letztens erfahren durfte 😛).
Auf alle Fälle sollte es mit Slick möglich sein Verschiebungen Pixelweise zu realisieren anstatt in 16er Schritten, die map die er verwendet scheint auch keine Implementierung aus Slick zu sein sondern ein Eigenbau (was nicht unbedingt schlechter sein muss).

Gruß
 

Zurück
Oben