Menu
CoddyTech

Tres vidas

Parte de la sección Fundamentos de scripting en Unity del Journey de Unity de Coddy. Lección 41 de 67.

challenge icon

Desafío

Intermedio

Tres fallos terminan el juego. Añade [SerializeField] private int lives (la escena lo establece en 3).

  • Cada estrella que no atrapes cuesta una vida y muestra Missed! Lives: 2, con las vidas restantes.
  • Cuando las vidas lleguen a 0, muestra también Game over y desactiva el script con enabled = false. Unity deja de llamar a Update() en un script desactivado, así que la estrella se detiene y el receptor deja de moverse.

Los aciertos siguen sumando puntos y acelerando las estrellas. Conserva todo lo de los pasos anteriores.

Pruébalo tú mismo

using UnityEngine;

public class Catcher : MonoBehaviour
{
    [SerializeField] private float speed = 6f;
    [SerializeField] private Transform star;
    [SerializeField] private float fallSpeed = 3f;
    [SerializeField] private float speedUp = 0.5f;
    private int score;

    void Update()
    {
        float x = transform.position.x;
        if (Input.GetKey(KeyCode.RightArrow))
        {
            x += speed * Time.deltaTime;
        }
        if (Input.GetKey(KeyCode.LeftArrow))
        {
            x -= speed * Time.deltaTime;
        }
        x = Mathf.Clamp(x, -4f, 4f);
        transform.position = new Vector3(x, transform.position.y, transform.position.z);

        star.position += Vector3.down * fallSpeed * Time.deltaTime;

        if (Vector3.Distance(transform.position, star.position) < 1f)
        {
            score++;
            fallSpeed += speedUp;
            Debug.Log("Caught! Score: " + score);
            ResetStar();
        }
        else if (star.position.y < 0f)
        {
            ResetStar();
        }
    }

    void ResetStar()
    {
        star.position = new Vector3(Random.Range(-4f, 4f), 6f, 0f);
    }
}

Todas las lecciones de Fundamentos de scripting en Unity