¿Te resulta más fácil leer con fondo crema, un tono de color, más contraste o un texto más grande? Elige tus colores y tu texto una sola vez, para todas las páginas.

Lección gratuita

Velocidad, gravedad y rebote

Después de esta lección: Puedo mover objetos con velocidad y gravedad y calcular su posición fotograma a fotograma, incluido un rebote.

Lección de 65 min2 comandosLaboratorio de desarrollo de juegos: bucle de juego, gravedad y colisiones en el navegador

La gravedad suma velocidad en cada fotograma

La gravedad de un videojuego es un número que se suma a la velocidad de un objeto en cada fotograma. La velocidad, a su vez, cambia su posición. Por eso un objeto que cae parece acelerar, igual que en la vida real.

Al final sabrás calcular dónde está un objeto que cae tras varios fotogramas y cómo se programa un rebote. Lo verás con una estrella del juego del laboratorio.

Al terminar esta lección

Nota

Puedo mover objetos con velocidad y gravedad y calcular su posición fotograma a fotograma, incluido un rebote.

Palabras clave

PalabraQué significaEjemplo
Velocidadlo que se mueve un objeto en cada fotogramaspeed
Gravedadun número que se suma a la velocidad en cada fotogramaGRAVITY
Aceleraciónel cambio de la velocidad en cada fotograma
Suelola altura a la que un objeto deja de caerfloor
Reboteinvertir y reducir la velocidad al llegar al suelobounce

Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.

Primero cambia la velocidad y luego la posición

Un objeto con gravedad hace dos cosas en cada fotograma, y el orden importa. Primero suma la gravedad a su velocidad. Después suma la velocidad a su posición.

En pantalla, la altura y crece hacia abajo. Una velocidad positiva baja el objeto y una negativa lo sube.

Cómo cae una estrella en el juego

Código: web
star.speed = star.speed + GRAVITY * level.gravityScale;
star.y = star.y + star.speed;

La caída tras cuatro fotogramas con gravedad 1

FotogramaVelocidadPosición
Salida00
111
223
336
4410

Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.

Sigue una estrella diez fotogramas en el laboratorio

Un script del laboratorio lee GRAVITY de game.js y sigue una estrella durante diez fotogramas. Escribe en inglés: gravity, y por cada frame su speed y su y.

La gravedad es 0,15. Verás la velocidad crecer de 0.15 a 1.50 y la altura llegar a 8.25 en el fotograma diez. Cada paso es mayor que el anterior.

Seguir una estrella durante diez fotogramas

Comando
docker exec jupyter python3 steps/fall.py

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

Dónde usa el juego la gravedad

El número de la gravedad se escribe una sola vez, arriba del archivo, como constante. Después se usa dentro de update, multiplicado por la escala del nivel.

El comando busca GRAVITY en game.js. Escribe dos líneas: la 3, donde se declara con el valor 0.15, y la 74, donde se suma a la velocidad de cada estrella.

Buscar dónde se declara y se usa GRAVITY

Comando
docker exec jupyter grep -n "GRAVITY" game/game.js

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

Un rebote invierte la velocidad y la reduce

El juego del laboratorio no rebota: las estrellas desaparecen al pasar el borde. Una pelota sí necesita rebotar.

Cuando la pelota pasa del suelo, se la coloca justo en el suelo y se invierte la velocidad. Se multiplica por un número menor que uno, el rebote, y así pierde fuerza en cada bote.

Un paso de una pelota que rebota

Código: python
# Un paso de la pelota: primero la velocidad, luego la posición.
speed = speed + gravity
y = y + speed
if y > floor:
    y = floor
    speed = -speed * bounce

Una pelota que rebota, con números

FotogramaVelocidadAlturaQué pasa
4410Llega al suelo justo
55, y luego -2,510Pasa del suelo: se pone en 10 y rebota
6-1,58,5Sube
7-0,58Sube menos
80,58,5Empieza a bajar otra vez

Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.

Un error frecuente

Advertencia

Mucha gente suma la gravedad directamente a la posición. Entonces la caída es lineal y no acelera. La gravedad se suma a la velocidad, y es la velocidad la que mueve el objeto.

Sobre este laboratorio y su código: Laboratorio de desarrollo de juegos: bucle de juego, gravedad y colisiones en el navegador

¿Enseñas a una clase? Asigna este módulo a tus alumnos con guía del profesor, tareas con corrección automática y un laboratorio para cada alumno.