Programmer un personnage qui saute

Programmation avancée de jeux en PureBasic
Avatar de l’utilisateur
Chris
Messages : 3731
Inscription : sam. 24/janv./2004 14:54
Contact :

Programmer un personnage qui saute

Message par Chris »

Est-ce que quelqu'un connait un moyen simple de programmer un personnage qui saute?

Bon, j'explique:

Quand on saute sur place, par exemple, la vitesse augmente rapidement au début du saut (pendant l'élan), puis diminue progressivement jusqu'à 0 à partir du moment ou les pieds ne touchent plus le sol. A ce moment là, le personnage est suspendu en l'air. Puis sa vitesse augmente progressivement,(mais en sens inverse), jusqu'au moment ou il touche le sol (...et Splashhhh !!!, comme une bouse :lol:)

En fait, sur une échelle de temps, ça doit représenter une sorte de courbe

Il doit bien y avoir un formule, (simple, parce que les math et moi, on est un peu en froid :twisted: ), qui permette de faire quelque chose d'un peu réaliste!

Chris :)
comtois
Messages : 5186
Inscription : mer. 21/janv./2004 17:48
Contact :

Message par comtois »

j'étais justement en train de bosser le sujet .
j'ai commencé une bricole , c'est un brouillon , j'attendais d'avoir arrangé un peu le truc avant de le poster, mais tu peux déjà y jeter un oeil .

http://perso.wanadoo.fr/comtois/M3D_Mat ... 130704.zip

Code : Tout sélectionner

V0=20 ; Vitesse initiale
X0=0 ;Position de départ   
oldX = X0
Y0=0 ; Position de départ 
g.f=9.81
Angle.f=45 ; angle initial 
Temps.f=0
While  y.f >= 0
x.f=V0 * (Cos(Angle * 0.0174533) * Temps) + X0
y.f=(-g/2 * Temps * Temps) + (V0 * Sin(Angle * 0.0174533) * Temps) + Y0
Pas.f = x - oldX
oldX = x
Debug "Temps = " + Str(Temps) + " x = " + StrF(x,2) + " y = " + StrF(y,2)  + " Pas = " + StrF(Pas)
Temps + 0.1
Wend
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message par Backup »

c'est un truc qui pourrai mem se passer de Math

si on pouvai utiliser les boucle for next step avec un step en variable
et non entier !!!

on aurai pu faire
vitesse=5 ; au debut il montera de 5 en 5

for pixel = 0 to 100 step vitesse ; le sprite monte pendant 100 boucle
vitesse=vitesse-0.5

si on fait correspondre le y du sprite avec pixel
a chaque boucle on diminue le pas de monter
du coup il monte de moins en moins vite

next pixel



dommage hein ? :?
comtois
Messages : 5186
Inscription : mer. 21/janv./2004 17:48
Contact :

Message par comtois »

http://purebasic.hmt-forum.com/viewtopic.php?t=91


Extrait de la partie utile .

Code : Tout sélectionner

DecAttraction.f = 0.05 
Attraction.f = 0 
Pas.f = 0 

Repeat 
  
  ClearScreen(0, 0, 0) 
  
  If ExamineKeyboard() 
  
    If KeyboardPushed(#PB_Key_Space) And Attraction = 0 And  AutoriseSaut 
      Attraction = 1.6 : DecAttraction = 0.05 
    EndIf 
   
  EndIf  
  
  ; LE perso 
  MoveEntity( 0 , Cosd( entity(0)\AngleX ) * Pas , Attraction, -Sind( entity(0)\AngleX ) * Pas ) 
  
  ; Gestion de l'attraction 
  Attraction - DecAttraction 

Mais je préfère la première solution , on peut régler la vitesse ,l'angle .

Il y les bases pour faire le jeu du canon , ou chacun tire à tour de rôle pour tenter de détruire la maison de l'autre .Il manque le vent .
Répondre