Hallo alle zusammen,
w?rde mich freuen wenn mir jemand erkl?rt warum der screen anf?ngt zu scrollen.
Ich habe mir aus mehreren Schnipseln eine einfache L?sung zum scrollen gebastelt, es funktioniert auch nur leider verstehe ich es nicht so richtig.
Also, folgender Code:
DRAWSPRITE array
- [y], xpos-scrollx, ypos-scrolly hier ist das Problem, warum kann ich scrollen wenn ich die Variablen scrollx und scrolly von den Tilepositionen abziehe?
DRAWSPRITE 2, playerx, playery
IF KEY(200) THEN playery=playery-3
IF KEY(208) THEN playery=playery+3
IF KEY(203) THEN playerx=playerx-3
IF KEY(205) THEN playerx=playerx+3
IF playerx<440 AND KEY(203) THEN scrollx=scrollx-3
IF playerx>200 AND KEY(205) THEN scrollx=scrollx+3
IF playery<200 AND KEY(200) THEN scrolly=scrolly-3
IF playery>240 AND KEY(208) THEN scrolly=scrolly+3
IF playerx<0 THEN playerx=0
IF playerx>590 THEN playerx=590
IF playery<0 THEN playery=0
IF playery>410 THEN playery=410
Ich wei?, es ist sehr einfach gehalten. Aber es reicht mir so. Freue mich ?ber jede Hilfe.
Du setzt beim Tastendruck die Variable ScrollX oder ScrollY h?her oder tiefer
Scrolling solltest du aber nur auf die Tilemap/Map anwenden, sonst machts weniger Sinn ;)
Hmmm, ist etwas verwirrend ;)
Du hast die pos und scroll Variablen.
Von der pos wird scroll immer abgezogen OK
Pos hat "0" und scroll jenachdem +3 oder -3, Ok.
Jetzt bewegts Du den Player nach rechts, ab einem gewissen punkt soll die map nach links scrollen,
ist der erreicht, bekommt scroll den wert "+3".
Nun schaut das so aus
pos - scroll
"0 - (+3)" = - 3
Verwirrend gell ;)
Folgendes, es wird von Pos immer etwas abgezogen, aber hiert heist das +3 das von pos 3 weiter ins Negative abgezogen wird,
anders herum genauso.
Soll das ganze nach rechts scrollen wird von
pos - scroll
"0 - (-3)" = +3
pos auch 3 abgezogen, da es aber selber einen Negativen wert hat muss man hier etwas umdenken da das ganze jetzt durch das zweifache - ins posetive
rutscht.
Man ist das d?mmlich zu erkl?ren... :puke:
Ich hoffe Du verstehst den mist denn ich hier schreibe :)
Hier ein beispielprogram:
a% = 100
PRINT pos - a,10,10
a% = -100
PRINT pos - a,10,30
SHOWSCREEN
KEYWAIT
Das ist klar, aber wenn ich z.Bsp. eine Player-Variable hoch oder runter setze, bewegt sich der Spieler, aber der screen scrollt ja nicht.
Ich verstehe den Zusammenhang mit xpos-scrollx, xpos-scrolly nicht.
Mom, ich scheib mal ein Beispiel.
Edit:
posx und posy sind hier die Grundkoordinaten
damit man etwas hat wovon etwas abgezogen oder dazugez?hlt werden kann.
Ich bin im erkl?ren nicht der st?rkste :S
aber ich Denke das Dir der Code weiter helfen wird wie das Funktioniert.
Er ist einfach gehalten und nicht auf speedoptiemierung ausgelegt.
// Die Tiles sind hier 32 x32 Pixel gross
/// F?r die Map
DRAWRECT 0,0,32,32,RGB(0xff, 0x00, 0x00)
DRAWRECT 1,1,30,30,RGB(0xff, 0xff, 0x00)
GRABSPRITE 0,0,0,32,32
BLACKSCREEN
//F?r den Player
DRAWRECT 0,0,32,32,RGB(0x00, 0x80, 0xff)
GRABSPRITE 1,0,0,32,32
BLACKSCREEN
// gebrauchte Variablen
GLOBAL posx%, posy%, scrollx%,scrolly%,playerx%,playery%,x%,y%
WHILE TRUE
// map zeichnen
/// simple map ohne extras ;)
// 20 felder lang und hoch
FOR y = 0 TO 19
FOR x = 0 TO 19
///pos ist hier die grundposition
DRAWSPRITE 0 ,(posx-scrollx) +( 32*x) , (posy-scrolly) + (32*y)
NEXT
NEXT
// player zeichnen
DRAWSPRITE 1, playerx, playery
//----------------------------------------------
// Berechnungen
IF KEY(200) THEN playery=playery-3
IF KEY(208) THEN playery=playery+3
IF KEY(203) THEN playerx=playerx-3
IF KEY(205) THEN playerx=playerx+3
IF playerx<440 AND KEY(203) THEN scrollx=scrollx-3
IF playerx>200 AND KEY(205) THEN scrollx=scrollx+3
IF playery<200 AND KEY(200) THEN scrolly=scrolly-3
IF playery>240 AND KEY(208) THEN scrolly=scrolly+3
IF playerx<0 THEN playerx=0
IF playerx>590 THEN playerx=590
IF playery<0 THEN playery=0
IF playery>410 THEN playery=410
SHOWSCREEN
WEND
schon mal danke, ich schaue es mir mal an.
Der player bleibt ja auf seinen X;Y Koordinaten nur die Map wird unter deinem Hintern verschoben :D
Stell dir vor die stehst aufm Laufband, genau das gleiche, du "stehts" am fleck rennst aber und das Laufband bewegst sich 10 KM/H nach -Y :D
Ich finde es f?r ein Jump&Run so besser.
Der Player kann sich in einem Teil des Bildes bewegen.
Kommt er ausserhalb, scrollt die Map.
So funktioniert es bei meinem Game wunderbar.....