Menu
CoddyTech

Stella dopo stella

Fa parte della sezione Fondamenti di scripting in Unity del percorso Unity di Coddy. Lezione 53 di 85.

challenge icon

Sfida

Medio

Invia una nuova stella dopo ogni presa e ogni mancata presa.

  1. Scrivi void ResetStar() che imposta star.position = new Vector3(Random.Range(-4f, 4f), 6f, 0f);, e chiamala quando prendi la stella al posto della vecchia riga.
  2. Dopo l'if della presa, aggiungi else if (star.position.y < 0f) che chiama ResetStar();. Un else if viene eseguito solo quando l'if precedente è falso.

Premi «Gioca»: ogni nuova stella cade in una nuova posizione x. Poi premi «Verifica».

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

Esercitati da solo: Playground Unity