Menu
CoddyTech

Stella dopo stella

Fa parte della sezione Fondamenti di scripting in Unity del percorso Unity di Coddy. Lezione 39 di 67.

challenge icon

Sfida

Medio

Invia una nuova stella dopo ogni presa e ogni mancata presa. Una stella viene mancata quando la sua y scende sotto 0. Presa o mancata, la stella riparte da y = 6 e z = 0, con una x casuale tra -4 e 4. Random.Range(min, max) restituisce un float casuale tra min e max, quindi Random.Range(-4f, 4f) sceglie quella x.

In entrambi i casi la stella riparte allo stesso modo, quindi scrivi il codice una sola volta in un metodo, void ResetStar(), e chiamalo da entrambi. Una mancata presa non assegna punti. Mantieni tutto ciò che hai scritto nei passaggi precedenti.

Provalo tu

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

Tutte le lezioni di Fondamenti di scripting in Unity