Menu
CoddyTech

Tre vite

Fa parte della sezione Fondamenti di scripting in Unity del percorso Unity di Coddy. Lezione 41 di 67.

challenge icon

Sfida

Medio

Tre mancate terminano la partita. Aggiungi [SerializeField] private int lives (la scena lo imposta a 3).

  • Ogni stella mancata costa una vita e registra Missed! Lives: 2, con le vite rimanenti.
  • Quando le vite raggiungono 0, registra anche Game over e disattiva lo script con enabled = false. Unity smette di chiamare Update() su uno script disattivato, quindi la stella si ferma e il catcher non si muove più.

Le stelle catturate continuano a dare punti e ad aumentare la velocità. Mantieni tutto ciò che hai aggiunto nei passaggi precedenti.

Provalo tu

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);
    }
}

Tutte le lezioni di Fondamenti di scripting in Unity