CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

Calculer un saut ?

the_gregg
the_gregg
Niveau 9
16 juillet 2002 à 02:35:39

Salut,

je suis entrain de faire mon jeu de plate forme . .. mais un petit problème . .. comment faire pour calculer un saut ?

car la, la méthode que j´utilise, je fais un saut en triangle et c´est pas très bo :(

InfinitFiction
InfinitFiction
Niveau 9
16 juillet 2002 à 05:28:47

Fait une courbe!!!

Mais pour le calcul j´peut pas vraiment t´aider parce que g vite oublié ma physique!!! Après 1 ans c normal non!!!

TeslaZ
TeslaZ
Niveau 2
16 juillet 2002 à 11:43:37

Salut,
Pour ton problème, tu devrais faire le calcul de trajectoire d´un projectile.
Souviens toi de tes cours de Physique de Terminal ; )
Je peut pas te faire un résumé ici ça serais trop long, mais si tu veut tu peut aller voir sur
http://prografix.free.fr/index.php?page=tut&=16

Au fait InfinitFiction, je te vois souvent critiquer des pov gamin qui débarque et qui veulent apprendre, mais on n´a jamais eu l´occasion de voir ce que tu sais faire.

PS : Désolé pour les fote dortografe, mais j´suis trop un blére :)

Trapamoosch
Trapamoosch
Niveau 5
16 juillet 2002 à 11:52:18

A priori, si ton perso fait un triangle en sautant, c´est que tu dois avoir y constant, mais qui ne fais juste que changer de signe quand tu atteint la flèche du saut. (en gros, au début de ton saut tu a Vy = constante, et quand tu atteint la hauteur max, tu fait Vy = - Vy)(note : x = abscisse et y = ordonnée, Vy = vitesse sur l´axe des x, pareil pour Vx, vitesse sur l´axe des x).

Pour la vitesse en x c´est bon, elle est constante pendant tout le saut. La vitesse en y, elle, ne l´est pas. La trajectoire de ton perso va passer par ce qu´on appelle "une flèche", moment où le perso sera au plus haut, et où Vy = 0.

Appliquons un ptit théorème de physique, celui sur l´énergie cinétique (delta Ec = sommes des travaux des forces). Coup de bol, dans ton cas tu n´as qu´une force : le poids de ton personnage, noté P et qui en plus ne travaille que sur l´axe des ordonnées ! (avec P=mg)

Etudions la montée du personnage...

- Son travail est donc WP = P * h (avec h hauteur MAXIMALE du perso) = -m * g * h
- Delta Ec = Ec(final) - Ec(initial) = -Ec(initial), car la fin de la montée, c´est avant la descente, donc pile poil sur la fleche, là où justement, Vy=0. --> Delta Ec = -1/2*m*Vy²

Delta Ec = Sommes des travaux des forces :
--> -1/2 * m * Vy² = -m * g * h

--> Vy = racine carrée[ 2*g*h ]

Ah, mais là on se dit : "ça couille, h étant lahauteur maximale du perso, Vy est... constant ! ". Oui mais non, en fait ici le Vy est le Vy maximal lui aussi (la vitesse qu´aurait ton perso en atterrissant au sol après une chute d´une hauteur h). Dans ton cas, il suffit de prendre la relation :

---> Vy = racine carrée[ 2*g*(h-y) ] avec la hauteur maximale du saut et y la hauteur courante du perso. Et là ça marche, la vitesse en y varie bien en fct de la hauteur, plus l´objet monte, plus elle diminue, et vice-versa.

Bien sur, tout ceci est purement physique et ne collera peut-être pas bien à ton jeu, à la taille de ton perso ou de tes décors. Tu peux parfaitement prendre une relation "qui ressemble" à celle là, légèrement bidouiller pour obtenir un résultat plus cohérent come Vy = a * racine carrée[ 2 * g * (h-y) ] avec a un coefficient bidon, permettant d´avoir un vitesse plus ou moins grande (selon que a > 1 ou a < 1)

VOila voila, j´espere avoir été clair (c´est pas très évident d´expliquer de la physique), si tas pas tout compris (ou si je me suis gourré, ce qui est possible), n´hésite pas à réclamer des précisions (je fais pas des études de physiques pour rien :p)

Lightness1024
Lightness1024
Niveau 10
16 juillet 2002 à 11:54:04

AHAHAH kan je pense aux gens qui disaient que yavai pas de maths dans les jeux ! !!
alors la enfin pour une fois un gars ki prouve par A+B ke y´en a.
et bien c´est simple, et figure toi ke je sais ca parce ke moi aussi jen ai fait un de jeu de plate forme il s´appelle super mario country et il est développé a 85\% (je le finirait jamais) il est en Qbasic et le code source est livré.
[www.lightness.fr.st page des programmes et telechargements en dessous du grand tableau.]

je vais t´expliquer ma methode car tu ne la trouveras surement pas dans un code source preske non commenté qui fait plus de 1000 lignes. (1000 lignes en Basic je peu vous dire ke ca commence a faire)

le principe c´est que j´ai 4 variables.
une variable pour la vitesse en X une variable pour la vitesse en Y, une variable pour la coordonnée en X et une variable pour la coordonnée en Y.
il ne faut jamais toucher directement aux variables de coordonnées, mais augmenter et diminuer progressivement les variables de vitesse.
a chaque boucle tu diminue la vitesse Y (ca créer la gravité) et si jamais tu saute, SET carrément la variable vitesse a une valeur bien définie et positive suffisament elevée pour donner l´impression d´une grand impulsion ki va le faire sauter.
dans chaque passage de la boucle (par exemple a la fin, juste avant l´affichage) fait ceci:
coordX = coordX + vitesseX
coordY = coordY + vitesseY

et avec la soustraction de la gravité a chaque boucle la courbe de saut se fera toute naturellement ! ! c´est une maniere plus simple et moins gourmande en calcul ke le site ka donné teslaZ.

Lightness1024
Lightness1024
Niveau 10
16 juillet 2002 à 11:54:38

bordel c koi ca !
trapamoosh on a posté en meme temps! !!!
PTAIN

Trapamoosch
Trapamoosch
Niveau 5
16 juillet 2002 à 11:57:10

nanananana, gt PREUMS moi ! :)

TeslaZ
TeslaZ
Niveau 2
16 juillet 2002 à 12:12:39

Ouha, quel bel exposé.
Vous m´impressionnez les mecs, pour une fois qu´il y a des gars qui s´y connaissent ; )
Juste pour info vous faites quoi dans la real life : )

Moi je viens d´avoir ma licence d´info.

Trapamoosch
Trapamoosch
Niveau 5
16 juillet 2002 à 12:30:32

Moi je rentre en 2eme annnée de physique-chimie (plus chimie que physique, parce que la physique, j´suis un peu une brouche héhé)

the_gregg
the_gregg
Niveau 9
16 juillet 2002 à 13:02:24

merci les gars ca me feras de la lecture ; )

je crois que je vais regarder + à celui de Lighness, ca m´a l´air moins compliqué ; ) lol

mais si ca ne fonctionne pas comme je veux je regarderais (et je me pèterais le cerveau ; ) ) en essayant de comprendre ;)

Trapamoosch
Trapamoosch
Niveau 5
16 juillet 2002 à 13:33:48

Oui, je te conseille la solution à Lightness, qui en revient strictement au même qu´à la mienne en fait, à quelques coefficients près.

En fiat, j´aurais pu me contenter de te dire qu´il fallait que Vy diminimue quand la hauteur du perso augmente et vice versa, mais je voulais te montrer pourquoi.

En gros, tu peux très bien faire Vy = a*(Hmax-h)

a : coeff à determiner par les essais
Hmax : hauteur maxi du saut
h : hauteur du perso à un moment donné

TeslaZ
TeslaZ
Niveau 2
16 juillet 2002 à 14:10:57

Ouai, mieux vaut pas se prendre la tête quand on peut faire simple ; )
Et vive la physique (Même si j´aimais pas trop ça quand j´en faisait, j’ préférai quand même ça à la chimie :)

the_gregg
the_gregg
Niveau 9
16 juillet 2002 à 14:19:59

sur un le forum du site de 3DGC on m´a proposé ça :

TailleSaut = 20
Vitesse = 1
For Boucle = 0 To 180 Step Vitesse
HauteurSaut = Sin(Boucle)*TailleSaut
Rem ici tu met le code pour ke le sprite se deplace dans laxe Y de HauteurSaut.
Sync
Next Boucle

c´est le bout de code carrément ; ) mais j´aimerais savoir si c´est une bonne solution ? (j´ai pas encore lu les votres en entier ; ) lol)

Le_Nain_Posteur
Le_Nain_Posteur
Niveau 10
16 juillet 2002 à 14:43:58

avec ca, la trajectoire de l´objet sera un demi-cercle! donc, aucun lien avec la physique!

je te conseil comme il etait ecrit dans un post precedent d´aller voir du cote de prografix ou tu as un article la-dessus.
de meme a www.gamedev.net ils avaient donne un lien vers le 1er chapitre d´un bouquin sur la physique(en anglais), mais si tu veux je t´envois directement le fichier

the_gregg
the_gregg
Niveau 9
16 juillet 2002 à 14:53:29

Pour le fichier de physique non merci ; )

lol

soit, je vais plutot essayer la méthode de lightness mais je vois pas comment faire . .. le problème, le sprite disparait de l´écran : ( . .. j´ai fait ça :

y (c´est la position où se trouve le sprite sur la ligne y)
ajust_sprite (c´est sur la ligne x)

if upkey()=1
For i = VitesseX to 25
For j = VitesseY to 50
ajust_sprite = ajust_sprite + i
y = y + VitesseY
sprite 2, ajust_sprite, x, 3
Next j
Next i
endif

TeslaZ
TeslaZ
Niveau 2
16 juillet 2002 à 14:57:57

ça ressemble a du Vb ça, beurk (For Boucle = 0 To 180 Step Vitesse)

Ouaip, tu peut utiliser ça si tu veut, mais c’est pas terrible.
Ton perso va suivre la trajectoire de la courbe sin * la taille du saut, pas très beau comme algo, mais ça devrai marcher et tu devrai avoir un résultat convainquant (enfin presque).
Le problème c que tu va être obligé de calculer la fonction sinus a chaque tour de boucle et la ça va te bouffer + d’un temps cpu.
De plus si tu veut que ton saut soit plus réaliste ( par exemple plus tu va vite, plus tu saute loin avec une trajectoire toute belle;) tu devrai utiliser la physique.

Avec un peut de bidouille tu devrais quand même pourvoir en faire qqchose, faudrait que tu modifie toi même la distance a parcourir sur l’axe x en fonction de la vitesse et te servir de ct’e truc pour calculer la hauteur.
Enfin bon avec ce truc tout seul tu peut rien faire de bien, soit tu le modifie (mais ça risque de pas être super optimisé) , soit tu te sert de l’ago Physique ( c la solution la plus jolie ; ), soit tu prend l´algo de lightness ( c la plus intéressante si tu veut pas te prendre la tete )

Bon courage, et désolé si c un peut confus ; )

---- Vive les moteurs 3D tous pourris, mais ce serais bien si j arrivais a en faire un ;) ----

TeslaZ
TeslaZ
Niveau 2
16 juillet 2002 à 14:59:07

Arf, bordel d apostrophes

Le_Nain_Posteur
Le_Nain_Posteur
Niveau 10
16 juillet 2002 à 15:18:12

The_Gregg:

ca ne sert a rien de nain briquer ces deux FOR. le mieux et de modifier les coordonnees dans la meme boucle. mais VitesseY tu le decremente quand??? car sinon c´est normal que l´objet sorte de l´ecran puisque tu ne fais qu´incrementer son ordonnee!

TeslaZ:

il peut regler le probleme de la rapidite du sinus en pre-calculant sa table. et en prenant la taille du saut qui soit une puissance de deux, il lui suffira de faire une rotation de bit.

the_gregg
the_gregg
Niveau 9
16 juillet 2002 à 15:50:37

merci le_nain_posteur ;) vais essayer après ;)

TeslaZ
TeslaZ
Niveau 2
16 juillet 2002 à 15:51:06

Ouai,
mais la c la mal de crane assuré ; )
(et pi en Vb faire des decalages de bit il est mal baré :)

Vive le C >> . HAHAHA
Désolé, mais des fois je m´emporte ;)

Sous forums
  • Aide à l'achat Mac
  • Internet
  • Macintosh
  • Création de sites web
  • Création de Jeux
  • Linux
  • Programmation
  • Steam Deck
  • Hardware