Menu
CoddyTech

¡Choque!

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

challenge icon

Desafío

Intermedio

¡Hora del peligro! Conserva todo lo de los pasos anteriores y termina el juego cuando un bloque toque al corredor:

  • Ambos son cubos de 1 unidad de ancho, así que un bloque toca al corredor cuando sus posiciones x están a menos de 1 unidad de distancia y sus posiciones y están a menos de 1 unidad de distancia.
  • Comprueba cada bloque después de que se mueva, en cada fotograma. Si hay contacto, registra Game over y desactiva el script con enabled = false, para que el corredor, los bloques y la generación se detengan.

Pulsa Jugar y comprueba cuánto tiempo aguantas; después, pulsa Comprobar.

Pruébalo tú mismo

using System.Collections.Generic;
using UnityEngine;

public class Runner : MonoBehaviour
{
    [SerializeField] private float speed = 6f;
    [SerializeField] private float laneEdge = 4f;
    [SerializeField] private GameObject blockPrefab;
    [SerializeField] private float spawnEvery = 1f;
    [SerializeField] private float fallSpeed = 5f;

    private List<GameObject> blocks = new List<GameObject>();
    private float timer;

    void Update()
    {
        Vector3 p = transform.position;
        p.x += Input.GetAxisRaw("Horizontal") * speed * Time.deltaTime;
        p.x = Mathf.Clamp(p.x, -laneEdge, laneEdge);
        transform.position = p;

        timer += Time.deltaTime;
        if (timer >= spawnEvery)
        {
            timer = 0f;
            Vector3 spot = new Vector3(Random.Range(-laneEdge, laneEdge), 10f, 0f);
            blocks.Add(Instantiate(blockPrefab, spot, Quaternion.identity));
        }

        for (int i = blocks.Count - 1; i >= 0; i--)
        {
            blocks[i].transform.position += Vector3.down * fallSpeed * Time.deltaTime;
            if (blocks[i].transform.position.y < -1f)
            {
                Destroy(blocks[i]);
                blocks.RemoveAt(i);
            }
        }
    }
}

Todas las lecciones de Fundamentos de scripting en Unity