Menu
CoddyTech

El corredor

Parte de la sección Fundamentos de scripting en Unity del Journey de Unity de Coddy. Lección 75 de 85.

En este capítulo crearás un juego pequeño, Esquiva los bloques. Guías a un corredor por un carril mientras caen bloques del cielo; un solo toque pone fin a la partida. Todo el juego está en un único script, Runner, que incorpora una función nueva en cada lección: guiar al corredor, hacer caer bloques, eliminarlos, detectar el impacto y llevar la puntuación.

La primera función es guiar al corredor sin que salga del carril, usando Mathf.Clamp(value, min, max) de Atrapa la estrella: devuelve min si el valor está por debajo del intervalo, max si está por encima y, en caso contrario, el propio valor. La ubicación de la limitación importa. Este medidor de carga se llena mientras mantienes pulsada la barra espaciadora, se vacía cuando no la mantienes pulsada y nunca sale del intervalo de 0 a 10:

[SerializeField] private float charge = 0f;

void Update()
{
    if (Input.GetKey(KeyCode.Space))
    {
        charge += 4f * Time.deltaTime;
    }
    else
    {
        charge -= 2f * Time.deltaTime;
    }
    charge = Mathf.Clamp(charge, 0f, 10f);
    transform.localScale = new Vector3(0.5f, charge, 0.5f);
}

La limitación se aplica después del cambio. Si se limitara primero, el valor podría terminar el fotograma un paso por encima del límite y la barra se dibujaría usando ese valor. Además, Mathf.Clamp devuelve un número nuevo en lugar de modificar la variable que le pasas, así que asigna el resultado de nuevo a esa variable.

challenge icon

Desafío

Intermedio

Empieza Dodge the Blocks: guía al corredor por su carril.

  1. En Update(), copia transform.position en Vector3 p y suma Input.GetAxisRaw("Horizontal") * speed * Time.deltaTime a p.x. El eje sin procesar se mueve a toda velocidad de inmediato.
  2. Asigna p.x = Mathf.Clamp(p.x, -laneEdge, laneEdge); y, después, transform.position = p;.

Pulsa «Jugar», haz clic en el juego y corre hasta ambos extremos: el corredor se detiene en los bordes. Después, pulsa «Comprobar».

Pruébalo tú mismo

using UnityEngine;

public class Runner : MonoBehaviour
{
    [SerializeField] private float speed = 6f;
    [SerializeField] private float laneEdge = 4f;

    void Update()
    {
        // muévete a lo largo de x con las flechas y luego mantén x dentro del carril
    }
}

Todas las lecciones de Fundamentos de scripting en Unity

Practica por tu cuenta: Playground de Unity