KINGx - Das inoffizielle PlayStation Forum & News Portal

Normale Version: [C] mitscrollender Hintergrund
Sie sehen gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Ich bin recht weit fortgeschritten, mit dem Technischen in meinem homebrew. Auch ein eigenes Mappingsystem nenne ich mein Eigen^^

ich würde gerne, ein im Hintergrund sich bewegendes Bild zeichnen, dass zwar mit der Kamera läuft, jedoch keinen Rand anzeigt. Im Prinzip eben, der Teil, der am linken/rechten/unteren/oberen Teil verschwindet wieder im entgegengesetzter Richtung drawen.

mein Ansatz ist:
blitAlphaImageToScreen(0+camx,0+camy,480+camx,272+camy,grass ,0,0);

leider ist funktioniert das nur (falschherum) mit den y koordinaten und X steht an 464 fest. Irgendwo liegt ein Denkfehler^^
Ich musste den Post jetzt zehn Mal lesen und habe glaube ich immer noch nicht ganz verstanden, was Du machen willst...

Willst Du sowas wie eine Endlos-Karte haben? Die Figur würde sich sozusagen auf einer Kugel bewegen. Wenn sie immer nach oben (zum Nordpol) geht und einfach immer geradeaus, dann würde sie irgendwann am Südpol ankommen. Wenn sie weitergeht kommt sie da an, wo sie losgelaufen ist.

Da musst Du dann gucken, ob die Figur mittlerweile weiter gelaufen ist als die Map breit ist. Wenn die Karte z.B. 16 Felder breit ist, dann soll das 17. wieder das erste sein, richtig?

Mit ein bisschen Mathematik (Modulo lässt grüßen) kann man das Problem leicht lösen.

Hoffe, das hilft Wink

Mit freundlichen Grüßen
wurzelbums
ja, ist ein bisschen kompliziert zu erklären^^

die View ist 480x272 groß. In der View soll ein einfaches Bild gedrawt werden. Bis dahin kein Problem.
Wenn man sich allerdings bewegt, soll sich der inhalt des Bildes in entgegengesetzter Richtung bewegen, nicht jedoch das gesammte Bild.

es soll der Eindruck entstehen, dass das Bild unendlich groß ist. In wirklichkeit ist es nur 480x272

bisher habe ich das so gelöst:
camx/y = 64 //Kamerafokus
x/y = 64 // Spielerposition
im prinzip also camx/y = x/y

blitAlphaImageToScreen(0+camx,0+camy,camx+480,camy+272,grass ,camx-x,camy-y);


das ist das genaue Gegenteil vondem ich will^^das Bild bewegt sich entgegen der Kameraposition. Einfach umdrehen kann ich das natürlich nicht.
doch, sag einfach camx=-x und camy=-y
so einfach dann doch nicht. ich habe anstatt camx/y eine neue definiert, um weiteren Problemen aus dem weg zu gehen.

int xcam=-x;
int ycam=-y;
blitAlphaImageToScreen(0+camx,0+camy,480+camx,272+camy,grass ,xcam+x,ycam+y);

leider bewegt sich das Bild in die falsche Richtung, sowie es an der X Koordinate bei +464 ein Ende hat.
Referenz-URLs