Sprung

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

 

Last-Action-Hero

Betreff: Sprung

BeitragSa, Sep 25, 2004 18:44
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi Leute ich brauch mal Hilfe
Ich kenn mich zwar relativ gut aus aber der Sprung war schon immer mein Problem Rolling Eyes

Also ich mach gerade ein Jump'n'Run-Spiel aus der Seitenansicht

Ich hab jetzt auch schon eine animierte Figur die nach rechts und links laufen kann
das ist alles kein Problem
Dann hab ich mehrere ebenen von auf/von denen mans springen kann
aus einzelnen images

also zb das das dann so etwa aussieht :

_______________ _____________
____________
________________ ___________

___________________________________________________


so zum beispiel (wie gesagt eben aus einzelnen 32*32 images zusammengebaut

Ich brauch jetzt also eine Art schwerkraft sodass man eben am Rand runterfallen kann und zwar eben nur bis man auf der darunterliegenden Ebene landet
und dann brauch ich für das ganze noch den Sprung
also das man eben nach oben fliegt und dann wieder nach unten (bis man wieder wo auftrift)

hab das schon einige male selber versucht aber irgendwo is es dann immer gehangen oder man is an einigen stellen durchgefallen

also wenn jemand sowas hat dann bitte bitte helft mir

danke
mfg LAH

BladeRunner

Moderator

BeitragSa, Sep 25, 2004 18:53
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi
-leg dir eine Variable für die y-Geschwindigkeit fest. Normalerweise liegt sie etwas über 0 (=Schwerkraft).
- wenn gesprungen wird, setze sie auf einen negativen Wert.
- in jedem Schleifendurchlauf prüfe ob die Geschwindigkeit < eines Maxwertes ist. Wenn ja, erhöhe sie ein wenig (hier kannst du "spielen")
- prüfe ob das Tile unter der Spielfigur "durchlässig" ist. wenn ja, erhöhe Spielerposition um die y-Geschwindigkeit.
- für den Sprung gilt natürlich eine entgegengesetzte Prüfung.
- nach Wunsch kann die letzte x-Geschwindigkeit für den Sprung gefreezed werden.


hope it helps.
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3
Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64
B3D BMax MaxGUI

Stolzer Gewinner des BAC#48, #52 & #92
 

Last-Action-Hero

BeitragSa, Sep 25, 2004 19:04
Antworten mit Zitat
Benutzer-Profile anzeigen
ja so hab ich mir das im großen und ganzen auch gedacht ^^
ich wills vielleicht mit dem sinus machen denn das wäre für sprung ideal
langsam größer dann wieder langsamer bis schlieslich ins minus (also wieder nach unten)
aber ich hab keinen plan wie ich das machen soll das man auf dem tile "landet"

Hubsi

BeitragSa, Sep 25, 2004 20:09
Antworten mit Zitat
Benutzer-Profile anzeigen
Du meinst das er nicht 'im' Tile steht?
Code: [AUSKLAPPEN]
temp%=player_y / 32
player_y=temp% * 32
Fertisch Smile
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn...

Jolinah

BeitragSa, Sep 25, 2004 20:11
Antworten mit Zitat
Benutzer-Profile anzeigen
Eigentlich brauchst du Sinus dazu nicht, obwohl es ähnlich wie Sinus funktioniert.

Code: [AUSKLAPPEN]

y# = 3.0  ;Ein bisschen Kraft die nach unten drückt.
Const MAX_Y# = 10.0  ;Maximale Fallgeschwindigkeit
Dim level(30,15)  ;Die map

Repeat
...


;Sprung funktion
If keyhit(57) and jump = false
  jump = true
  y = -8.0  ;Bewirkt das er nach oben springt
                ;Allerdings geht es auch immer langsamer gegen oben und der
                ;spieler fällt dann auch wieder runter da, y = y + 0.2,
                ;und fällt immer schneller bis er den max speed erreicht.
Endif

;Wenn man am Springen bzw. fallen ist Schwerkraft dazu rechnen.
If jump = true
  y = y + 0.2
  If y > MAX_Y then y = MAX_Y
  player_ypos = player_ypos + y  ;Spielerposition aktualisieren
Endif

;Kollision
If y > 0.0 and jump = true  ;wenn der Spieler fällt.

  ;Tile unter dem Player prüfen, col_tile kann irgend ne zahl sein die bei
  ;dir ein kollidierbares Tile ist.

  if level(player_xpos / tilesize, player_ypos / tilesize + 1) = col_tile
    ;Wenn unter dem Player ein kollidierbares Teil ist, setz den Player
    ;auf die Bodenhöhe des Tiles, schalt den Sprung aus und setze
    ;schwerkraft zurück
    player_ypos = (player_ypos / tilesize) * tilesize
    jump = false
    y = 3.0
  Endif
Endif

;Das ähnliche wenn der Spieler steigt, nur muss das Tile über dem Spieler
;geprüft werden.
If y < 0.0 and jump = true
  ...
Endif

...
Until Keyhit(1)


usw...

Der Code funktioniert so natürlich nicht, es soll nur zeigen wie man es ungefähr machen könnte. Natürlich muss man dann auch wenn man nicht springt das Teil unter sich prüfen. Wenn da dann Luft unten dran ist, also wenn man runterfallen kann so kann man einfach Jump auf true setzen.
Da hier diesmal y nicht auf einen minus Wert gesetzt wird beginnt der Spieler einfach zu fallen und prüft im Fallen wieder ob ein Tile unter dem Player ist. Wenn ja, wird jump dann wieder ausgeschaltet.

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group