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

Faire sauter un personnage en avant ?

silence_libre
silence_libre
Niveau 10
27 janvier 2005 à 02:07:16

Bonjour à tous :)

Bon voilà j´ai un petit problème pour faire sauter mon personnage en avant. C´est pour un jeu de plateforme 2D ( à la Flashback/Oddworld) réalisé avec Director.

Alors le problème c´est que le personnage n´avance pas dans l´espace au moment où il saute, mais dans son animation, ce qui me pose quelques problèmes.

Je m´explique : quand il marche c´est simple il avance disons de 5 pixels par secondes, et je double ce nombre quand il court mais. Par contre; s´il saute en avant, physiquement le perso n´avance pas réelement mais on le voit quand même avancer dans l´animation du saut, le perso avance, mais pas le sprite.

--> Voilà l´animation, vous comprendrai mieux ce que je veux dire : http://culturelibre.webheberg.com/silence/web/saut_avant.mpg

Donc, détecter une collision avec un mur n´est pas possible pendant le saut contrairement à quand il marche où s´il rencontre un mur, je le stoppe simplement. Un autre problème est la détection du sol, il faut savoir s´il doit tomber dans le vide ou toucher le sol, évidemment pas pratique avec un sprite qui ne bouge pas, donc impossible de situer le perso dans le plan au moment où il saute.

Pour le sol j´ai fait comme ça : je coupe l´animation du saut en deux ´clips´ différents ( première partie : saut jusqu´à ce qu´il mette le premier pied au sol, deuxième partie : il attérit et se relève).
Il effectue la première partie, une fois terminé il redevient à la position normale ( debout) pour voir où il se situe dans le plan ( l´endroit où il attérit) et tester s´il touche le sol ou pas ( avant affichage, ça ne se voir pas). S´il touche le sol, il continue avec la deuxième partie, sinon il tombe.

Pour le mur j´ai fait plus simple : trop près, il saute même pas, comme ça, pas de problème de collision au milieu de saut.

Alors maintenant je me rend compte que ça me crée un autre problème que je n´arrive pas à résoudre : au changement de plan, s´il y a un mur de l´autre coté, et qu´il saute . .. bref on s´en fous : au lieu de trouver une solution encore aussi conne que l´autre je me suis dis plutôt de le faire sauter " réelement" mais là je ne vois pas comment faire.

Il faudrait d´abord que sur l´anim il reste sur place, bon faisable, mais après comment faire pour gérer le temps ? au début du saut il met un certain temps à démarre puis à attérir, etc, c´est ça qui donne bien, au début j´avais essayé de le faire vraiment sauter ( saut constant en fait) mais le résultat était horrible, c´est pour ça que je l´ai fait sauter en longueur.

Alors comment on fait normalement pour ce genre de truc ? :)
Quand je regarde Flashblack, Oddworld ou Bermuda Syndrome, c´est ultra précis, comment ils font ? :ouch2:

Merci d´avance :-p

LGV
LGV
Niveau 28
27 janvier 2005 à 02:15:23

essaye de modeliser le déplacement de ton sprite, tel que dans la vidéo montrée juste au dessus, par une équation horaire. Libre à toi de mettre en place le modele mathématique qui te donnera de bons résultats ( spline ? cubique ? série ? composée de sinusoides ? etc.) Si tu ne parviens pas à écrire un modele satisfaisant, tu peux toujours marcher " par keyframe" : tu discretises manuellement le mouvement ( à l´instant t, mon sprite est ici, à l´instant t + dt, il est là, etc. ça te donne un ensemble de valeurs connues que tu n´as plus qu´à interpoler selon le modele qui te plait pour te rapprocher du résultat).
Que tu procedes par modele mathématique ou par keyframe, le but c´est de permettre d´écrire une fonction type " je te passe un valeur de t entre 0.0 ( debut) et 1.0 ( fin) et tu me renvoies la position relative du sprite par rapport à la position au temps initial" ( ou dans le genre, selon ce qui t´arranges). Tu n´auras plus alors qu´à déplacer ton anim static selon la trajectoire définie par ton equation.

LGV
LGV
Niveau 28
27 janvier 2005 à 02:47:31

tant qu´à y etre, voilà comment je procederais.
la position du sprite doit bien s´approximer par un polynome de P(2) ; on discretise la position, ça donne un ensemble de valeurs y = f(x) ( dans le plan, betement). Regression quadratique sur ces données, ça nous donne les coefficients du polynome qu´on cherche ; et ça ne devrait pas etre mauvais du tout.
maintenant il faut la paramétrisation ( le déplacement sur la courbe, pour donner l´accélération du mouvement notamment) ; visiblement, ça a une forme " en cloche" ( on se déplace lentement au début, rapidement au milieu et à nouveau lentement sur la fin). On peut donc tenter de modéliser par une gaussienne, une spline, ou plus simple, un polynome ( un seul de degré 4, ou alors par morceau avec des degrés inférieurs). La encore, régressions ( ou méthodes itératives à coup de minimisation de normes pour la spline par ex.) pour déterminer les coefficients des modeles. Faut faire pareil que pour la position, mais pas dans le plan y = f(x), mais dans l´espace 2D d = f(t) ( avec d distance sur la courbe de position à partir de la position initiale).
Au final, la combinaison des deux modeles te donne la position en fonction du temps, et là c´est gagné.

silence_libre
silence_libre
Niveau 10
27 janvier 2005 à 02:52:37

Merci :ok:

Je viens de me rendre compte qu´avec Director, il était assez simple de simuler l´accélération. J´ai essayé avec un bloc qui entoure le perso et qui le suit assez précisément, donc si j´arrive à intégrer ça à la collision, ça devrait être parfait :)

Merci :-)

fil_razorback
fil_razorback
Niveau 10
27 janvier 2005 à 07:39:22

je suis pas touché par le probleme de saut mais c´est quoi une spline et une regression quadratique?(le reste ca va^^)

silence_libre
silence_libre
Niveau 10
27 janvier 2005 à 15:34:39

Même si tout le monde s´en tappe, j´ai su faire ce que je voulais :fier:

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