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

  1. 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.).

  2. 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):

text
al presionar bandera
por siempre
    cambiar y por (-1)  // cae hacia abajo

Al 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:

text
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:

  1. Edita el disfraz del personaje.

  2. Dibuja una línea o un pequeño rectángulo de color fucsia (magenta) en la zona de los pies.

  3. Ahora, en lugar de detectar si el personaje toca el rojo, detectaremos si el color fucsia toca el color rojo.

Nuevo código:

text
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.

text
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:

text
al presionar bandera
fijar [velocidad] a [0]

3. Al presionar una tecla, acelerar:

text
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 negativa

4. En el bucle principal, mover según la velocidad y aplicar fricción:

text
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 -1 para que la caída sea más rápida o más lenta.

  • Aceleración: Cambia 0.5 para que el personaje acelere más o menos al pulsar las teclas.

  • Fricción: Prueba con 0.1, 0.05 o 0.2 para 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 saltos para 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

ConceptoImplementación
GravedadRestar un valor fijo a Y en cada ciclo (cambiar y por -1).
Detección de sueloUsar sensor de color: solo se frena cuando el color de los pies toca la plataforma.
Movimiento con teclasAcelerar la variable velocidad al presionar teclas.
Movimiento continuoDesplazar al personaje según velocidad en cada ciclo.
FricciónReducir progresivamente la velocidad (restar un pequeño valor) para simular rozamiento.
Control de rotaciónFijar 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

Entradas más populares de este blog

1.4 - Interfaz de usuario-Xnergic TCM

1.7 - Bloques de uso más común-Xnergic TCM

1.5 - Personajes-Xnergic