Menu
CoddyTech

Sempre più veloce

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

challenge icon

Sfida

Medio

Fai in modo che ogni presa acceleri le stelle.

  1. Aggiungi [SerializeField] private float speedUp = 0.5f;.
  2. Nell'if della presa, accanto a score++;, aggiungi fallSpeed += speedUp;. Non in ResetStar(): anche i mancati recuperi la chiamano.

Premi «Gioca» e prendi qualche stella: ognuna cadrà più velocemente. 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);
            ResetStar();
        }
        else if (star.position.y < 0f)
        {
            ResetStar();
        }
    }

    void ResetStar()
    {
        star.position = new Vector3(Random.Range(-4f, 4f), 6f, 0f);
    }
}

Tutte le lezioni di Fondamenti di scripting in Unity

Esercitati da solo: Playground Unity