Springen

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

 

Leonb

Betreff: Springen

BeitragDi, Feb 22, 2005 18:34
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi!

Ich habe nun ein kleines 2D Spiel gecodet, wo man nach links und nach rechts laufen kann.
Nun: Wie bekomme ich mein Mänchen in die Luft? Wie bekomme ich es zum Springen?

Hab alles Möglich mit
Hoehe=Hoehe+1
If Hoehe>XXX Then Hoehe=XXX
und so......

aber hat alles nicht gefunzt!
Bin bei einer Auflösung von 800x600
und latsche auf der Höhe 450 (im Hintergrund ist das der Boden ) Wink

nach Links und rechts klappts so:


Code: [AUSKLAPPEN]
If KeyDown(rechts) ;rechts laufen
I=I+1 ;Frame
a=a+3+Speed ;Laufen
If a>806 Then a=1
If I>1 Then I=0
If I<1 Then I=0
DrawImage Smilie,a,450,I


Wer kann mir helfen?
meine HP:
http://www.scz.de.ms

Rakete

BeitragDi, Feb 22, 2005 18:47
Antworten mit Zitat
Benutzer-Profile anzeigen
Wo ist das Problem?
Code: [AUSKLAPPEN]
if keydown(oben) then
if sprungkraft < 30 then
y = y - 3
drawimage spieler x,y
sprungkraft = sprungkraft + 1
endif
endif


Rakete

Spikespine

BeitragDi, Feb 22, 2005 19:02
Antworten mit Zitat
Benutzer-Profile anzeigen
hmmm... ich machs immer so ähnlich:
Code: [AUSKLAPPEN]
Graphics 800,600,0,2

boden = 500 : playery# = boden
schwerkraft# = 0.1
sprungkraft = 5
speed = 2


SetBuffer BackBuffer()

Repeat
   Cls
   If KeyDown(203) Then
      playerx = playerx - speed
   EndIf
   If KeyDown(205) Then
      playerx = playerx + speed
   EndIf
   If KeyHit(200) Then
      sprung = 1
      playeryspeed# = playeryspeed - sprungkraft
   EndIf
   
   If sprung = 1 Then
      playeryspeed# = playeryspeed + schwerkraft
      playery# = playery + playeryspeed
      If playery > boden Then
         sprung = 0
         playery = boden
         playeryspeed = 0
      EndIf
   EndIf
      
   Oval playerx,playery,10,10,1
   
   Flip
Until KeyHit(1)
 

Leonb

BeitragMi, Feb 23, 2005 16:48
Antworten mit Zitat
Benutzer-Profile anzeigen
Danke Spikespine!
Ich habs gerade so noch geschafft, deine Version in eine Version mit einer Animation umzuwandeln Wink

Könntest du mir das nochmal erklären?
Wie das mit dem Fallen so klappt
meine HP:
http://www.scz.de.ms

Spikespine

BeitragMi, Feb 23, 2005 18:27
Antworten mit Zitat
Benutzer-Profile anzeigen
Naja also du hast gewöhnlich für den Spieler zwei Variablen, die die Position speichern: Die X-Position und die Y-Position. Hier habe ich sie PlayerX und PlayerY# genannt. Da es für dieses Beispiel bei den waagrechten Bewegungen nur eine Geschwindigkeit (hier 2 Pixel pro Schleifendurchlauf) gab, teste ich einfach die Pfeiltasten links und rechts und Werte diese dann auf PlayerX aus (If Keydown(203) Then PlayerX = PlayerX - Speed; wobei Speed den Wert zwei hat).
Weil sich beim Sprung die vertikale Geschwindigkeit immer ändert, nehm ich eine extra Variable (hier: PlayerYSpeed#), die die aktuelle nach oben gerichtete Geschwindigkeit speichert. Wenn die nach-oben-Taste gedrückt wird, setze ich die Variable Sprung auf 1 (If Keyhit(200) Then Sprung = True). Außerdem wird die vertikale Geschwindigkeit auf einen negativen Wert eingestellt, und zwar der Sprungkraft. (Je höher die Sprungkraft desto höher der Sprung, ist wohl logisch Smile ) Dann prüfe ich in der Schleife jedesmal, ob gerade der Spieler gerade Springt (If Sprung Then ...). Da auf einen Körper die Erdanziehungskraft wirkt, muss die Vertikale Geschwindigkeit wohl immer kleiner (bzw in diesem Fall immer größer werden, da sie ja am anfang unter null war) werden, und zwar um den wert Schwerkraft# = .1 , den ich am Anfang des Codes festgelegt habe (Anmerkung: normalerweise setztr man vor so einen Wert das Schlüsselwort Const) . Nun muss ich noch die Y-Koordinate verändern, und zwar um die Y-Geschwindigkeit (PlayerY = PlayerY + PlayerYSpeed). Dass unser Spieler nicht unendlich tief fällt prüfen wir die Y-Koordinate einfach noch mit dem Boden, den ich auch schon als Variable gespeichert habe (If PlayerY > Boden Then ...) Wenn der Spieler wieder den Boden berührt ist der Sprung zuende (Sprung = False) und wir setzen die Y-Koordinate wieder auf den Boden (PlayerY = Boden).

Naja, das wars eigentlich auch schon. Wenn du von diesem Wirrwarr da oben kein Wort verstanden haben solltest, habe ich volles verständnis Wink


Bei eventuellen Fragen musst du einfach den Mund aufmachen.

Grüße,
Spike

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group