Menu
CoddyTech

Estrela após Estrela

Parte da seção Noções básicas de scripting no Unity do Journey de Unity da Coddy. Lição 39 de 67.

challenge icon

Desafio

Médio

Envie uma nova estrela após cada captura e cada erro. Uma estrela é perdida quando seu y cai abaixo de 0. Capturada ou perdida, a estrela reinicia em y = 6 e z = 0, em um x aleatório entre -4 e 4. Random.Range(min, max) retorna um número de ponto flutuante aleatório entre min e max, então Random.Range(-4f, 4f) escolhe esse x.

Nos dois casos, a estrela reinicia da mesma maneira, então escreva isso uma vez em um método, void ResetStar(), e chame-o nos dois casos. Um erro não marca ponto. Mantenha tudo das etapas anteriores.

Experimente você mesmo

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

Todas as lições de Noções básicas de scripting no Unity