Menu
CoddyTech

Wygrana lub przegrana

Część sekcji Fizyka i rozgrywka ścieżki Unity w Coddy. Lekcja 32 z 63.

challenge icon

Wyzwanie

Średni

Ostatni krok: sposób na wygraną. Zachowaj wszystko z wcześniejszych kroków i dodaj do Ball:

  • public int target = 10; (w Inspectorze ustaw 8).
  • Gra trwa, gdy timeLeft jest większe od 0, a score jest mniejsze od target. Zapisz to jako metodę bool IsPlaying() i użyj jej: zegar odlicza czas, strzałki przesuwają piłkę, a monety zwiększają wynik tylko wtedy, gdy gra trwa.
  • Gdy moneta zwiększy score do wartości równej target lub większej, wyświetl You win! po wierszu z wynikiem.
  • Gdy najpierw skończy się czas, wyświetl You lose! po wierszu Time's up!.

Naciśnij Play i zdobądź 8 punktów, zanim skończy się czas, a następnie naciśnij Check.

Spróbuj swoich sił

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

Wszystkie lekcje w sekcji Fizyka i rozgrywka