Menu
CoddyTech

Stern um Stern

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

challenge icon

Aufgabe

Mittel

Sende nach jedem Fangen und jedem Verfehlen einen neuen Stern. Ein Stern gilt als verfehlt, wenn sein y-Wert unter 0 fällt. Ob gefangen oder verfehlt: Der Stern startet bei y = 6 und z = 0 neu, bei einem zufälligen x-Wert zwischen -4 und 4. Random.Range(min, max) gibt einen zufälligen Float-Wert zwischen min und max zurück, daher wählt Random.Range(-4f, 4f) diesen x-Wert aus.

In beiden Fällen wird der Stern auf dieselbe Weise neu gestartet, also schreibe es einmal in einer Methode, void ResetStar(), und rufe sie in beiden Fällen auf. Ein Verfehlen gibt keine Punkte. 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;
    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++;
            Debug.Log("Caught! Score: " + score);
            star.position = new Vector3(star.position.x, 6f, star.position.z);
        }
    }
}

Alle Lektionen in Grundlagen des Scripting in Unity