Menu
CoddyTech

Acertou!

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

challenge icon

Desafio

Médio

Hora do perigo. Mantenha tudo das etapas anteriores e encerre o jogo quando um bloco tocar no corredor:

  • Ambos são cubos com 1 unidade de largura, então um bloco toca no corredor quando as posições x deles estão a menos de 1 unidade de distância e as posições y deles estão a menos de 1 unidade de distância.
  • Verifique cada bloco depois que ele se mover, em cada quadro. Ao tocar, registre Game over e desligue o script com enabled = false, para que o corredor, os blocos e a criação de blocos parem.

Pressione Play e veja quanto tempo você consegue durar, depois Check.

Experimente você mesmo

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 as lições de Noções básicas de scripting no Unity