Forums Développement Multimédia

Aller au contenu

En réponse à Comment faire rebondir la balle?


Options du message

  • Anti-spam : un petit exercice
  ou Annuler


Résumé du sujet

dldler

Posté 20 July 2015 - 13:42 PM

Hello; brizzly.
En fait, tu te compliques, car non, tu n'utilises pas qu'un vecteur de booléens.
Tu utilises un vecteur de booléens + un nombre réel qui est de toute façon signé.
Autant se servir de ce signe : il simplifie les mathématiques et évite les ifs et si on le réfléchit avec une bonne abstraction, tout est transparent.
De plus, ceci ne résout en rien le problème de la balle "enterrée". Tu as exactement le même problème à régler avec ta technique.


HS : de toute façon, s'il fallait vraiment simplifier, il y toujours la possibilité de le faire sans ligne de code :).

brizzly

Posté 20 July 2015 - 08:26 AM

Salut, j'utilise simplement un vecteur (1,1) pour spécifier les 4 directions de la balle. des Boolean font aussi l'affaire.
En gros quand ton vecteur vaut (1,1) ta balle va vers la droite et le bas, en (1,0) elle va juste vers la droite. En cas de débordement d'écran tu multiplie la composante en X de ton vecteur pour la faire changer de direction : (-1,1) par exemple.
Ton déplacement c'est alors : balle_X = balle_X + n * vector_X;

JNG

Posté 11 July 2015 - 10:25 AM

Merci bcp dldler, je comprend mieux le prgm. Merci pour ton aide. :)

dldler

Posté 08 July 2015 - 11:31 AM

Bonjour JNG

Ta description du problème est fausse ;-)

En fait, sur certaines valeurs de départ, la balle veut bien rebondir.
Pour d'autres valeurs, elle ne rebondit pas.

Quand elle rebondit, tout fonctionne comme prévu, donc pas de commentaire.

Quand ça ne rebondit pas, que se passe-t-il ?
En fait, la balle continue d'avancer (vitesse en X) mais on dirait qu'elle "clignotte" en vitesse y.
Ta balle est coincée "sous" le sol…
Pourquoi ?
Prenons un cas concret :
- la balle est en position y = 349
- sa vitesse en y est de 10

Ton code s'exécute :
- la balle passe en 349+10 = 359
- la position est > à 350, la vitesse de la balle devient : 10 * -0,8 = -8

Boucle suivante :
- la balle passe en position 359...

JNG

Posté 08 July 2015 - 09:52 AM

j'ai remarqué qu'on modifiant le paramètre position (une valeur de 70 par exemple) sur y la balle rebondit:

//posi° initiale de la ball
ball.x = 50;
ball.y = 70;

???

JNG

Posté 08 July 2015 - 09:22 AM

Bonjour

Je commence tout juste dans le domaine. Mon premier objectif est de faire rebondir une balle avec cette commade: if (ball.y > 350). J'ai remarqué que si j'entre une valeur inférieure à 350 la balle rebondit et si je tape une valeur supérieur à 349 la balle ne rebondit pas. Pouvez-vous m'expliquer le "truk" afin que je puisse mieux comprendre le programme. Merci de votre aide.

Voici mon prgm:

package {
                import flash.display.Sprite;
                import flash.<...

Voir le sujet complet (ouvre une nouvelle fenêtre)

authorised training centre

Centre de Formation Mediabox - Adobe et Apple Authorised Training Center.

Déclaré auprès de la Direction du Travail et de la Formation Professionnelle

Mediabox : SARL au capital de 62.000€ - Numéro d'activité : 11 75 44555 75 - SIRET : 49371646800035

MEDIABOX, 23, rue de Bruxelles, 75009 PARIS

FFP