2013-10-14 4 views
-1

Je suis en train de créer un jeu Flash utilisant AS3. Je suis un novice en programmation. Le problème que je rencontre est lié au fait que le jeu saute une mécanique de gravité.(Jeux) Jumping and Gravity Mechanics

Actuellement, la touche Haut fait remonter le personnage (vitesse de 20 pixels/image) s'il est en panne. Si la touche Haut n'est pas enfoncée, le personnage cesse de se déplacer vers le haut. Si le personnage est hors du sol, la force de gravité est également en jeu. Si le personnage est hors du sol, la variable de gravité (à l'origine 0) augmente de (1.5) chaque image. La variable de gravité contrecarre alors le personnage jusqu'à ce qu'il soit tiré vers le sol. Au sol, la variable de gravité est de retour à 0.

Cela fonctionne plutôt bien. Cependant, le saut lisse et courbe n'est réalisable que si la touche Haut est TOUJOURS enfoncée. Sinon, vous tombez très rapidement si vous relâchez la touche Haut. Je sais que je pourrais résoudre ce problème en changeant le saut d'un saut de retenue à un saut sur clé. Cependant, je ne veux pas faire ça.

TL; DR Je veux un saut parabolique parfait!

+0

J'ai juste eu une idée. Si j'avais une façon de mesurer combien de temps je maintenais la touche Up enfoncée, je pourrais l'utiliser comme un facteur de la vitesse du mouvement ascendant. – LaPXL8R

Répondre

2

Ceci est une question un peu large et complexe. Il me semble que vous n'allez pas dans la bonne direction pour appliquer la physique à votre jeu. Voici quelques concepts que j'examineraient:

  • Mettez à jour votre jeu chaque image si vous n'êtes pas déjà addEventListener(Event.ENTER_FRAME, frame);
  • gravité devrait être une accélération constante et ont toujours un effet sur votre personnage. const GRAVITY:Number = 9.8; // or whatever value
  • Vous devez vérifier les collisions entre votre personnage et le sol. Quand ils entrent en collision, vous placez la position du personnage à celle du sol (donc il ne tombe pas).
  • Lorsque le personnage saute, vous pouvez définir la vitesse de départ. Sur votre événement ENTER_FRAME gravité doit être appliquée à cette vitesse de sorte que votre personnage ralentit progressivement et commence à tomber.
  • Examinez les équations mathématiques SUVAT pour trouver des façons simples de calculer le mouvement. link

Si vous voulez la physique, la détection de collision, etc. sans devoir les programmer vous-même alors this est un choix populaire.