Menu
CoddyTech

Immer schneller

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

challenge icon

Aufgabe

Mittel

Bei jedem Fangen fallen die Sterne schneller. Füge [SerializeField] private float speedUp hinzu (die Szene setzt ihn auf 0.5) und addiere ihn jedes Mal zu fallSpeed, wenn ein Stern gefangen wird. Ein verfehlter Stern ändert die Geschwindigkeit nicht. 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);
            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