Menu
CoddyTech

Drei Leben

Teil des Abschnitts Grundlagen des Scripting in Unity der Unity-Journey von Coddy. Lektion 41 von 67.

challenge icon

Aufgabe

Mittel

Drei Fehlversuche beenden das Spiel. Füge [SerializeField] private int lives hinzu (die Szene setzt den Wert auf 3).

  • Jeder verpasste Stern kostet ein Leben und gibt Missed! Lives: 2 mit der Anzahl der verbleibenden Leben aus.
  • Wenn die Leben 0 erreichen, gib auch Game over aus und schalte das Skript mit enabled = false aus. Unity ruft Update() für ein deaktiviertes Skript nicht mehr auf, daher bleibt der Stern stehen und der Fänger bewegt sich nicht mehr.

Gefangene Sterne geben weiterhin Punkte und lassen die Sterne schneller fallen. Behalte alles aus den vorherigen Schritten bei.

Probier es selbst

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

Alle Lektionen in Grundlagen des Scripting in Unity