Menu
CoddyTech

Vincere o perdere

Fa parte della sezione Fisica e gameplay del percorso Unity di Coddy. Lezione 32 di 63.

challenge icon

Sfida

Medio

Ultimo passaggio: un modo per vincere. Mantieni tutto ciò che hai fatto nei passaggi precedenti e aggiungi a Ball:

  • public int target = 10; (nell’Inspector imposta 8).
  • La partita è in corso mentre timeLeft è maggiore di 0 e score è minore di target. Scrivilo come metodo, bool IsPlaying(), e usalo: il tempo scorre, le frecce spingono e le monete aumentano il punteggio solo mentre la partita è in corso.
  • Quando una moneta porta score a target o oltre, registra You win! dopo la riga del punteggio.
  • Quando il tempo scade per primo, registra You lose! dopo la riga Time's up!.

Premi Play e raggiungi 8 punti prima che scada il tempo, poi premi Check.

Provalo tu

using UnityEngine;

public class Ball : MonoBehaviour
{
    public float force = 10f;
    public int score;
    public float timeLimit = 60f;
    public float timeLeft;
    private Rigidbody rb;

    void Start()
    {
        rb = GetComponent<Rigidbody>();
        timeLeft = timeLimit;
    }

    void Update()
    {
        if (timeLeft > 0f)
        {
            timeLeft -= Time.deltaTime;
            if (timeLeft <= 0f)
            {
                timeLeft = 0f;
                Debug.Log("Time's up! Score: " + score);
            }
        }
    }

    void FixedUpdate()
    {
        if (timeLeft > 0f)
        {
            float x = Input.GetAxis("Horizontal");
            float z = Input.GetAxis("Vertical");
            rb.AddForce(new Vector3(x, 0f, z) * force);
        }
    }

    public void AddScore(int points)
    {
        score += points;
        Debug.Log("Score: " + score);
    }
}

Tutte le lezioni di Fisica e gameplay