3.5 - Simulando la gravedad y los MRUA. "Juegos de plataformas"
https://www.youtube.com/watch?v=DOxHryAFdBs&list=PL5tA44GpyFntFHtHd6Zxb2xQZpxwOfeu3&index=22
Simulación de gravedad y movimiento en juegos de plataformas
🎯 Objetivo de este tutorial
Vamos a construir los fundamentos físicos de un juego de plataformas. Aprenderás a:
Simular la gravedad para que el personaje caiga.
Detectar el suelo solo con los pies (usando sensores de color).
Implementar un movimiento lateral con teclas.
Aplicar aceleración y fricción para un movimiento más realista (movimiento rectilíneo uniformemente variado).
🏗️ Paso 1: Preparar el escenario y las plataformas
Escenario: Dibuja un fondo con plataformas de color rojo. Puedes usar la herramienta de dibujo del escenario para crear rectángulos rojos en diferentes posiciones (suelo, plataformas elevadas, etc.).
Personaje: Usa el gato de Scratch o crea tu propio personaje. Asegúrate de que sea fácil de distinguir del fondo rojo.
🎨 Las plataformas deben ser de un color uniforme y diferente al del personaje (el rojo es una buena opción).
⬇️ Paso 2: Simular la gravedad (caída constante)
La gravedad se simula restando un valor fijo a la posición Y del personaje en cada iteración de un bucle.
Código básico (en el personaje):
al presionar bandera
por siempre
cambiar y por (-1) // cae hacia abajoAl presionar la bandera, el personaje caerá sin parar.
🛑 Paso 3: Detener la caída al tocar el suelo
Para que el personaje se detenga al tocar una plataforma, añadimos una condición:
Gravedad condicional:
por siempre
si <no <tocando el color [rojo]?>> entonces
cambiar y por (-1)Con esto, el personaje caerá solo cuando no esté tocando el color rojo (las plataformas). Al tocar el rojo, se detiene.
Problema: El personaje se detiene si toca el rojo con cualquier parte de su cuerpo (cabeza, manos, etc.), lo cual no es realista.
👣 Paso 4: Detectar el suelo solo con los pies (sensor de color)
Para solucionarlo, vamos a crear un sensor en los pies:
Edita el disfraz del personaje.
Dibuja una línea o un pequeño rectángulo de color fucsia (magenta) en la zona de los pies.
Ahora, en lugar de detectar si el personaje toca el rojo, detectaremos si el color fucsia toca el color rojo.
Nuevo código:
por siempre
si <no <color [fucsia] está tocando [rojo]?>> entonces
cambiar y por (-1)Ahora el personaje solo se detendrá cuando los pies (el color fucsia) toquen la plataforma (color rojo). Si toca con la cabeza, seguirá cayendo.
🏃 Paso 5: Movimiento lateral básico con teclas
Añadimos el control con las flechas izquierda y derecha.
al presionar tecla [flecha derecha]
apuntar en dirección (90)
mover (10) pasos
al presionar tecla [flecha izquierda]
apuntar en dirección (-90)
mover (10) pasos⚠️ El personaje puede girar y quedar boca abajo. Para evitarlo, cambia el estilo de rotación a "solo izquierda-derecha" (en la pestaña de disfraces, haz clic en el icono de la "i" y selecciona la opción de rotación).
🚀 Paso 6: Movimiento realista con aceleración y fricción (MRUV)
En lugar de mover el personaje una cantidad fija al pulsar una tecla, vamos a usar una variable de velocidad que se acumule y se frene progresivamente.
1. Crear una variable global llamada velocidad.
2. Inicializar la variable al empezar el programa:
al presionar bandera
fijar [velocidad] a [0]3. Al presionar una tecla, acelerar:
al presionar tecla [flecha derecha]
cambiar [velocidad] por (0.5) // aceleración positiva
al presionar tecla [flecha izquierda]
cambiar [velocidad] por (-0.5) // aceleración negativa4. En el bucle principal, mover según la velocidad y aplicar fricción:
por siempre
// Movimiento horizontal con velocidad
cambiar x por (velocidad)
// Aplicar fricción (solo si hay velocidad)
si <(velocidad) > [0]> entonces
cambiar [velocidad] por (-0.1) // frenar si va a la derecha
sino
si <(velocidad) < [0]> entonces
cambiar [velocidad] por (0.1) // frenar si va a la izquierda
fin
fin
// ... (gravedad y detección de suelo)Ajusta los valores de aceleración (0.5) y fricción (0.1) para que el movimiento se sienta natural. Si la fricción es muy alta, el personaje se detiene rápido; si es baja, derrapa mucho.
🧪 Paso 7: Puesta a punto y ajustes
Gravedad: Ajusta el valor de
-1para que la caída sea más rápida o más lenta.Aceleración: Cambia
0.5para que el personaje acelere más o menos al pulsar las teclas.Fricción: Prueba con
0.1,0.05o0.2para encontrar el punto de "derrape" deseado.Límite de velocidad: Puedes añadir un condicional para que la velocidad no supere un máximo (ej:
si <(velocidad) < [10]>).
🧠 Ampliaciones y mejoras
Salto: Añade un bloque que, al presionar la tecla de espacio, dé un "impulso" vertical (cambiar Y en positivo) solo si está tocando el suelo.
Doble salto: Usa una variable
saltospara permitir un segundo salto en el aire.Plataformas móviles: Haz que algunas plataformas se desplacen horizontal o verticalmente.
Enemigos: Añade objetos que se muevan y que el personaje deba esquivar.
📚 Resumen del tutorial 3.4
| Concepto | Implementación |
|---|---|
| Gravedad | Restar un valor fijo a Y en cada ciclo (cambiar y por -1). |
| Detección de suelo | Usar sensor de color: solo se frena cuando el color de los pies toca la plataforma. |
| Movimiento con teclas | Acelerar la variable velocidad al presionar teclas. |
| Movimiento continuo | Desplazar al personaje según velocidad en cada ciclo. |
| Fricción | Reducir progresivamente la velocidad (restar un pequeño valor) para simular rozamiento. |
| Control de rotación | Fijar rotación a "solo izquierda-derecha" para evitar que el personaje se ponga boca abajo. |
🎬 ¡Ya tienes la base de tu juego de plataformas!
Combinando gravedad, detección de suelo con sensor en los pies y movimiento con aceleración y fricción, has creado un sistema de físicas mucho más realista y divertido que el movimiento básico "paso a paso". Ahora puedes añadir saltos, enemigos, recolectables y niveles para construir tu propio juego completo. ¡A seguir creando
Comentarios
Publicar un comentario