Menu
CoddyTech

Plataformas móviles

Parte de la sección Creación de juegos reales del Journey de Unity de Coddy. Lección 49 de 56.

challenge icon

Desafío

Intermedio

La plataforma azul debe deslizarse de un lado a otro sobre el hueco. Conserva todo lo de la lección anterior.

Completa MovingPlatform:

  • Dos campos que configura el Inspector, distance (3) y speed (1.5), y un public Vector3 delta.
  • Se desliza desde donde empieza hasta distance unidades en dirección +x a speed unidades por segundo, luego vuelve al punto de inicio y así sucesivamente para siempre.
  • En cada fotograma, delta indica cuánto se movió en ese fotograma: la posición después del movimiento menos la posición antes.

Un CharacterController no es transportado por aquello sobre lo que se encuentra: en una plataforma móvil permanece donde está y la plataforma se desliza por debajo. Mover su transform.position tampoco funciona: el siguiente Move del controlador empieza desde donde la física lo vio por última vez y deshace el cambio. Haz que Player se desplace junto con la plataforma:

  • Añade OnControllerColliderHit. Cuando la normal del impacto apunta hacia arriba (hit.normal.y es mayor que 0.5: el jugador está de pie sobre ella) y el objeto tiene un MovingPlatform, guarda esa plataforma en un campo.
  • En Update, añade el delta de esa plataforma al movimiento que se pasa a controller.Move y luego olvida la plataforma (establece el campo en null). La llamada a Move la vuelve a encontrar mientras el jugador siga de pie sobre ella.

Pulsa Play, salta a la plataforma y desplázate con ella; luego pulsa Check.

Pruébalo tú mismo

using UnityEngine;

public class MovingPlatform : MonoBehaviour
{
    // Una lección posterior completará esto: una plataforma que se desliza de un lado a otro.
}

Todas las lecciones de Creación de juegos reales