Menu
CoddyTech

El cazador

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

En este capítulo se crea un pequeño juego, Catch the Star, con una característica por lección: una estrella cae, deslizas un receptor a izquierda y derecha por debajo de ella, cada captura suma puntos y hace que la siguiente estrella caiga más rápido, y tres fallos terminan el juego. Todo está en un solo script, Catcher, en el receptor. La primera característica es el movimiento: el receptor se desliza con las teclas de flecha y nunca se sale del suelo.

La tarea de mantener un número dentro de unos límites se realiza con Mathf.Clamp(value, min, max). Devuelve min cuando el valor es menor que min, max cuando es mayor que max y, en caso contrario, el propio valor. Esta cámara sigue al jugador torre arriba, pero su altura se mantiene entre 2 y 12:

[SerializeField] private Transform player;

void Update()
{
    float y = Mathf.Clamp(player.position.y, 2f, 12f);
    transform.position = new Vector3(transform.position.x, y, transform.position.z);
}

Clamp devuelve un número nuevo y no cambia nada por sí solo, así que asigna el resultado. Aplica Clamp después de todos los cambios del fotograma y antes de volver a asignar la posición, y ningún fotograma mostrará el objeto más allá de su límite.

challenge icon

Desafío

Intermedio

Dale movimiento al receptor, la barra azul.

  1. En Update(), copia transform.position.x en float x y luego suma o resta speed * Time.deltaTime según la flecha que mantengas pulsada.
  2. Mantén el receptor de 2 unidades de ancho en el suelo (x de -5 a 5): x = Mathf.Clamp(x, -4f, 4f);.
  3. Vuelve a escribir x en transform.position, conservando y y z.

Pulsa «Jugar» y mantén pulsadas las flechas: se detiene en los bordes. Después, pulsa «Comprobar».

Pruébalo tú mismo

using UnityEngine;

public class Catcher : MonoBehaviour
{
    [SerializeField] private float speed = 6f;

    void Update()
    {
        // Flechas: desliza el catcher a lo largo de x a speed unidades por segundo.
        // Mantén todo el catcher sobre el suelo (x de -5 a 5, el catcher tiene 2 unidades de ancho).
    }
}

Todas las lecciones de Fundamentos de scripting en Unity

Practica por tu cuenta: Playground de Unity