Plus facile à lire avec un fond crème, une teinte, plus de contraste ou un texte plus grand ? Choisissez vos couleurs et votre texte, une fois pour toutes les pages.

Leçon gratuite

Vitesse, gravité et rebond d'un objet

Après cette leçon: Je peux calculer la vitesse et la position d'un objet qui tombe, image après image.

Leçon de 70 min2 commandesLab de développement de jeux : boucle de jeu, gravité et collisions dans le navigateur

Comment un jeu fait tomber un objet

La gravité, dans un jeu, est un petit nombre ajouté à la vitesse d'un objet à chaque image. L'objet tombe donc de plus en plus vite, comme une pomme dans la vie réelle.

Savoir le calculer permet de régler la chute d'une balle, la hauteur d'un saut et la force d'un rebond avec quelques nombres.

À la fin de cette leçon

Remarque

Je peux calculer la vitesse et la position d'un objet qui tombe, image après image.

Mots clés

MotCe que ça veut direExemple
Positionl'endroit où se trouve l'objet, en pixels
Vitessede combien de pixels la position change à chaque image
Gravitéun nombre ajouté à la vitesse à chaque image0,15
Rebondle retour en arrière de la vitesse quand l'objet touche le sol
Coefficient de rebondla part de vitesse gardée après un rebond0,5
Pas de tempsune image : la durée entre deux calculs

Les cellules que les étudiants remplissent restent vides dans cet aperçu.

La gravité change la vitesse, pas la position

À chaque image, un jeu fait deux additions dans cet ordre. D'abord la vitesse reçoit la gravité. Ensuite la position reçoit la vitesse.

La gravité ne déplace donc jamais l'objet directement. Elle le rend seulement plus rapide, et c'est la vitesse qui le déplace. Sur l'écran, y augmente vers le bas.

Exemple : une balle qui tombe

Code: web
<pre id="sortie"></pre>

Avant de lancer les Run

Remarque

Démarrez le labo et ouvrez le terminal. Le script fall.py suit une étoile du jeu pendant dix images. Il écrit des mots anglais : gravity est la gravité, speed est la vitesse, frame est l'image.

Suivre une étoile pendant dix images

Commande
docker exec jupyter python3 steps/fall.py

Affichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.

Vérifier la vitesse après dix images

Commande
docker exec jupyter python3 -c "print(0.15 * 10)"

Affichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.

Ce que montrent les dix images

Le premier Run écrit d'abord la gravité, 0.15, puis dix lignes. La vitesse croît de 0.15 à chaque image et atteint 1.50 à la dixième. Le second Run le confirme : dix fois 0.15 font 1.5.

La hauteur ne croît pas au même rythme : 0.15, puis 0.45, puis 0.90. Elle atteint 8.25 à la dixième image. Chaque pas est plus grand que le précédent.

Un rebond renverse la vitesse

Quand la balle touche le sol, le jeu remet sa position au niveau du sol. Puis il inverse la vitesse et la multiplie par un coefficient de rebond, par exemple 0,5. La balle repart vers le haut, moins vite qu'elle n'est arrivée.

Avec un coefficient de 1, elle rebondirait toujours à la même hauteur. Avec 0, elle resterait collée au sol.

Exemple : une balle qui rebondit

ImageVitessePositionCe qui se passe
122elle tombe
246elle tombe
3612elle tombe
4820elle touche le sol à 20, la vitesse devient -4
5-218elle remonte
6018sommet du rebond
7220retour au sol, la vitesse devient -1

Les cellules que les étudiants remplissent restent vides dans cet aperçu.

Une erreur fréquente

Attention

Beaucoup pensent que la gravité fait tomber l'objet du même nombre de pixels à chaque image. Faux : elle change la vitesse, donc la chute s'accélère. Pour une chute à vitesse constante, il faudrait ne jamais ajouter la gravité à la vitesse.

À propos de ce labo et de sa source: Lab de développement de jeux : boucle de jeu, gravité et collisions dans le navigateur

Vous enseignez à une classe ? Proposez ce module à vos étudiants avec un guide de l'enseignant, des devoirs corrigés et un laboratoire pour chaque étudiant.