Jump n Run Sprung (Allgemein)

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

Producer

Betreff: Jump n Run Sprung (Allgemein)

BeitragFr, Apr 18, 2008 20:41
Antworten mit Zitat
Benutzer-Profile anzeigen
Also irgendwie habe ich leichte Probleme mit realistischem Sprung Verhalten in Jump n Runs... Bisher habe ich das immer folgendermaßen gelöst (Ist jetzt nur mal schnell geschriebener Pseudocode - gehört zu keinem Projekt oder so):

Code: [AUSKLAPPEN]

if KeyHit(SPRUNGTASTE) then
    sprung=1
endif
if sprung=1 then
    if positionY<MAX_SPRUNGHÖHE
         positionY=positionY+1
    else
         sprung=2
    endif
endif
if sprung=2 then
   if positionY>BODENHÖHE
         positionY=positionY-1
   else
         sprung=0
   endif
endif

Ich hoffe ihr versteht was ich meine Confused

Aber so ganz realistisch ist das ja nicht gerade... Sad

Wie code ich Sprünge besser?

Danke schon mal für jegliche Hilfe
in this world, all i got is my word and my balls, and i don't break em for nobody

D2006

Administrator

BeitragFr, Apr 18, 2008 21:06
Antworten mit Zitat
Benutzer-Profile anzeigen
Zum Beispiel mit einer Y-Geschwindigkeitsvarieble.

PseudoCode: [AUSKLAPPEN]

y = y + y_speed#
If y> BODENHOEHE Then y = BODENHOEHE

If KeyHit( LEERTASTE ) Then
y_speed = y_speed - 5.0 ;oder so, den wert anpassen
EndIF

y_speed = y_speed + .0 ;Gravitation
Intel Core i5 2500 | 16 GB DDR3 RAM dualchannel | ATI Radeon HD6870 (1024 MB RAM) | Windows 7 Home Premium
Intel Core 2 Duo 2.4 GHz | 2 GB DDR3 RAM dualchannel | Nvidia GeForce 9400M (256 MB shared RAM) | Mac OS X Snow Leopard
Intel Pentium Dual-Core 2.4 GHz | 3 GB DDR2 RAM dualchannel | ATI Radeon HD3850 (1024 MB RAM) | Windows 7 Home Premium
Chaos Interactive :: GoBang :: BB-Poker :: ChaosBreaker :: Hexagon :: ChaosRacer 2
 

beginr

BeitragSa, Apr 19, 2008 14:24
Antworten mit Zitat
Benutzer-Profile anzeigen
also ich würds so machen (bin aber nicht ganz sicher)

PseudoCode: [AUSKLAPPEN]
n = floor#(sqr#(sprunghoehe*2)); n solltest du so waehlen, dass deine sprunghoehe ;ungefaehr n*(n+1)/2 betraegt

if keyhit(sprungtaste) then
 spring()
endif

function spring()
 for i = 1 to n
  yposition = yposition + i
 next
 ; max. sprunghoehe erreicht
 delay wartezeit; mit versch. werten experimentieren
 for i = 1 to n
  yposition = yposition - i
 next
end function


dies müsste den fall- und hochspringvorgang relativ gut simulieren, optimal ist es, wenn deine sprunghoehe wirklich n*(n+1)/2 ist.

sorry es muss floor# statt ceil# heissen, hab mich vertan.
  • Zuletzt bearbeitet von beginr am Mo, Apr 21, 2008 14:40, insgesamt einmal bearbeitet

Nibor

BeitragSa, Apr 19, 2008 21:24
Antworten mit Zitat
Benutzer-Profile anzeigen
Du könntest die höhenänderunen in nem Feld speichern:


Code: [AUSKLAPPEN]
Dim feld(20)
for A=0 to 30
 read feld(A)
next
data 0,5,4,4,3,3,3,2,2,2,1,1,0,0,0,0,0,0,-1,-1,-2,-2,-2,-3,-3,-3,-4,-4,-5,0

if KeyHit(SPRUNGTASTE) and sprung=0 then
    sprung=1
endif
if sprung>=1 then
    positionY=positionY+feld(sprung)
    sprung=sprung+1
endif
if sprung>=30 then sprung=0
http://www.blitzforum.de/showcase/203/

Producer

BeitragMo, Apr 21, 2008 1:50
Antworten mit Zitat
Benutzer-Profile anzeigen
Danke euch allen Very Happy
Funktioniert super! (Habe die Variante mit Feldern genommen)
in this world, all i got is my word and my balls, and i don't break em for nobody
 

BIG BUG

BeitragMo, Apr 21, 2008 21:40
Antworten mit Zitat
Benutzer-Profile anzeigen
Nix für ungut, aber die von D2006 angedeutete Lösung ist die einzig sinnvolle für ein klassisches Jump&Run-Spiel.
Mit den anderen Krücken wirst Du früher oder später schön Probleme bekommen. Blup.
B3D-Exporter für Cinema4D!(V1.4)
MD2-Exporter für Cinema4D!(final)

DerHase

BeitragMo, Apr 21, 2008 22:07
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich bin mit Big Bug einer Meinung Wink
Play Satyr!

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group