Menu
CoddyTech

Estrella tras estrella

Parte de la sección Fundamentos de scripting en Unity del Journey de Unity de Coddy. Lección 39 de 67.

challenge icon

Desafío

Intermedio

Envía una estrella nueva después de cada captura y cada fallo. Se falla una estrella cuando su y baja de 0. Capturada o fallada, la estrella vuelve a empezar en y = 6 y z = 0, en una x aleatoria entre -4 y 4. Random.Range(min, max) devuelve un float aleatorio entre min y max, así que Random.Range(-4f, 4f) elige esa x.

En ambos casos, la estrella vuelve a empezar de la misma manera, así que escríbelo una vez en un método, void ResetStar(), y llámalo desde ambos. Un fallo no suma puntos. Conserva todo lo de los pasos anteriores.

Pruébalo tú mismo

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 las lecciones de Fundamentos de scripting en Unity