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.
Desafío
Fácil- En
Runner.Update, cuando se presione A o la flecha izquierda (Input.GetKeyDown), establecelane = Mathf.Max(-1, lane - 1). - Cuando se presione D o la flecha derecha, establece
lane = Mathf.Min(1, lane + 1). - Después calcula
targetXy mueve al corredor hasta allí concontroller.Move, como antes. - 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