Wie lasse ich ein bild weiterscrollen???
-
- Beiträge: 3
- Registriert: 08.04.2005 14:17
Wie lasse ich ein bild weiterscrollen???
Ich wollte fragen wie ich einen Hintergrund weiterscroolen lassen kann, wenn z.B. eine Figur in die nähe des Bildschirmrandes kommt.
MfG fighterforjesus
PS: GOD BLESS YOU!!!
<a href="http://www.christeens.de" target="_blank"><img src="http://christeens.pm-ws.de/banner_1.jpg" alt="" border="0"></a>
PS: GOD BLESS YOU!!!
<a href="http://www.christeens.de" target="_blank"><img src="http://christeens.pm-ws.de/banner_1.jpg" alt="" border="0"></a>
-
- Beiträge: 17389
- Registriert: 10.11.2004 03:22
-
- Beiträge: 3
- Registriert: 08.04.2005 14:17
ich hab noch kein bild wollte aber ca. 4096*768 nehmen(falls das geht)
MfG fighterforjesus
PS: GOD BLESS YOU!!!
<a href="http://www.christeens.de" target="_blank"><img src="http://christeens.pm-ws.de/banner_1.jpg" alt="" border="0"></a>
PS: GOD BLESS YOU!!!
<a href="http://www.christeens.de" target="_blank"><img src="http://christeens.pm-ws.de/banner_1.jpg" alt="" border="0"></a>
Code: Alles auswählen
If figurx > 800
figurx = figurx - 10
bgx = bgx - 10
EndIf
kluger Mann + kluge Frau = Romanze | dummer Mann + dumme Frau = Schwangerschaft
kluger Mann + dumme Frau = Affäre | dummer Mann + kluge Frau = Shopping
kluger Mann + dumme Frau = Affäre | dummer Mann + kluge Frau = Shopping

-
- Beiträge: 17389
- Registriert: 10.11.2004 03:22
nun, aus den meisten Graka geht es nicht, ein Sprite anzuzeigen (oder davon zu clippen),fighterforjesus hat geschrieben:ich hab noch kein bild wollte aber ca. 4096*768 nehmen(falls das geht)
das größer als der Screen ist.
da du eine höhe von 768 angibst, nehme ich mal an, daß du auf einem 1024x768 Screen arbeiten willst.
du könntest jetzt mit 4 Bildern à 1024x768 arbeiten, müsstest davon immer 2 anzeigen
(oder fast immer: in 1023 von 1024 Fällen)
du sparst etwas speicherarbeit, wenn du mit 8 Bildern à 512x768 arbeitest,
davon musst du dann immer 3 anzeigen, das wären 25% weniger.
du kannst ein großes Blid erstellen, und dann in 8 Teile schneiden, die du in 8 Sprites lädst.
das nur mal allgemein, dir ging es ja ums scrolling.
zigapeda hat da ja schon was angedeutet.
für die anzeige des hintergrundes nimmst du eben keinen festen wert [z.b. DisplaySprite(Nr, -13, 0)],
sondern eine Variable, z.b. BackX (zigapeda: bgx (BackGround X-koordinate))
(wie du sie letztendlich nennst, bleibt dir überlassen)
also DisplaySprite(Nr, BackX, 0) (*)
(*) mit mehreren Bildteilen wird das noch etwas anders, aber eins nach dem anderen
jetzt kanst du durch veränderung von BackX beeinflussen, welcher abschnitt des Bildes angezeigt wird.
im beispiel von zigapeda würden Bild und Player bei erreichen eines Randes
um 10 pixel nach links springen, du willst aber wohl einen 'reinscroll'-effekt.
also brauchst du noch einen Zähler, der das reinscrollen für einen Moment ablaufen lässt.
(eine geschlossene Schleife bringt nichts, weil du ja auch jeden Schritt anzeigen musst)
ich gehe bei diesem Beispiel mal davon aus, dass du die spielfigur um jeweils 1 pixel seitwärts bewegst.
Code: Alles auswählen
If KeyboardPushed(#PB_Key_Right)
PlayerX = PlayerX +1
EndIf
sonst 'schiebt' die spielfigur nur den rand vor sich her.
deshalb nehm ich hier mal ne differenz von 2.
(wenn deine spielfigur sich um 2 bewegt, nimmst du 3 oder 4,
wenn sie sich um 3 bewegt, nimmst du 5 oder 6,
wenn 4, dann 6 o. 7 o. 8, etc. etc.pp.)
folgende vorgehensweise: wenn die spielfigur einen randbereich berührt,
setzt du ein Flag, um scrolling zu aktivieren (hier: ScrollOn),
setzt einen Counter hoch, der die dauer des scrollings steuert (hier: ScrollCount)
als Randbereich nehm ich mal 128pixel, das passt gut für ein 64pix breites playersprite.
Code: Alles auswählen
If PlayerX > 896 ; 1024 minus 64pix Rand und 64pix Player-Breite
ScrollOn = 1
ScrollCount = 128
EndIf
bedeutet das, dass der Hintergrund insgesamt um 256pixel weitergescrollt wird.
Code: Alles auswählen
If ScrollOn <> 0
If ScrollCount > 0
ScrollCount = ScrollCount -1
BackX = BackX -2*ScrollOn
PlayerX = PlayerX -2*ScrollOn
Else
ScrollOn = 0
EndIf
EndIf
das mache ich, damit das scrolling in beide Richtungen funktioniert.
bei erreichen des linken Randes machen wir:
Code: Alles auswählen
If PlayerX < 64 ; der 64pix Rand OHNE die Player-Breite
ScrollOn = -1
ScrollCount = 128
EndIf
ScrollOn = 1 -> nach links scrollen (rechter Rand)
ScrollOn = -1 -> nach rechts scrollen (linker Rand)
ScrollOn = 0 -> nicht scrollen.
das ist erstmal die theorie soweit, hier ist noch kein check drin, ob das bild zuende ist,
und auch nicht die darstellung der mehreren Teilbilder.
ich bitte erstmal um Echo, ob du das soweit verstehen konntest,
ich hoffe, ich habs nicht zu kompliziert gemacht.
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Der Weise weiß, dass er ein Narr ist.
-
- Beiträge: 3
- Registriert: 08.04.2005 14:17
@Kaeru Gaman
ich verstehe es jetz müssen wir es nur noch ans spiel angleichen dann passt das ich danke dir für deine Hilfe
ich verstehe es jetz müssen wir es nur noch ans spiel angleichen dann passt das ich danke dir für deine Hilfe
MfG fighterforjesus
PS: GOD BLESS YOU!!!
<a href="http://www.christeens.de" target="_blank"><img src="http://christeens.pm-ws.de/banner_1.jpg" alt="" border="0"></a>
PS: GOD BLESS YOU!!!
<a href="http://www.christeens.de" target="_blank"><img src="http://christeens.pm-ws.de/banner_1.jpg" alt="" border="0"></a>