Menu
CoddyTech

Tres carriles

Lección 1 de 20 del curso Juego de Unity: Carriles celestes de Coddy.

En este curso crearás un juego completo, una característica por lección. Un corredor se desplaza a toda velocidad por una carretera en lo alto del cielo. Se le acercan barreras, barras y muros, hay monedas a lo largo de los carriles y la carretera se vuelve más rápida cuanto más tiempo sobrevivas.

El proyecto ya tiene cuatro scripts: Runner en el jugador, Road, GameManager y Coin. Por ahora, la mayoría están vacíos y se irán completando lección a lección. Hay un quinto script, CameraFit, en la cámara: amplía la vista en la pantalla alta de un teléfono para que quepan los tres carriles, y no tendrás que cambiarlo.

El corredor nunca avanza. Solo se mueve entre tres carriles: izquierda, centro y derecha. Mantén el carril como un número entero, -1, 0 o 1, y calcula dónde queda en el eje x:

float targetX = lane * laneWidth;

El corredor tiene un CharacterController, así que se mueve con controller.Move(motion): Move recibe cuánto debe avanzar en este fotograma, no dónde debe terminar. Para llegar a targetX, muévete la diferencia entre esa posición y la posición actual del corredor:

float x = targetX;
Vector3 move = new Vector3(x - transform.position.x, 0f, 0f);
controller.Move(move);

Mathf.Max(-1, lane - 1) es lane - 1, pero nunca menor que -1, así que no hay ningún carril más allá del de la izquierda.

challenge icon

Desafío

Fácil
  1. En Runner.Update, cuando se presione A o la flecha izquierda (Input.GetKeyDown), establece lane = Mathf.Max(-1, lane - 1).
  2. Cuando se presione D o la flecha derecha, establece lane = Mathf.Min(1, lane + 1).
  3. Después calcula targetX y mueve al corredor hasta allí con controller.Move, como antes.
  4. Pulsa «Jugar» y prueba con A y D.

Pruébalo tú mismo

using UnityEngine;

public class Runner : MonoBehaviour
{
    public float laneWidth = 2.5f;

    public int lane;

    private CharacterController controller;

    void Start()
    {
        controller = GetComponent<CharacterController>();
    }

    void Update()
    {
        // cambia de carril aquí
    }
}

Todas las lecciones de Juego de Unity: Carriles celestes

Practica por tu cuenta: Playground de Unity