Menu
CoddyTech

Criar objetos com um temporizador

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

Um gerador que cria algo a cada poucos segundos precisa de um temporizador. Time.deltaTime é o tempo que o último quadro levou; portanto, somá-lo em um campo a cada Update() fornece os segundos que se passaram. Quando o total atingir o intervalo, gere o objeto e subtraia o intervalo do total.

Esta fonte lança uma gota de água a cada meio segundo:

public GameObject dropPrefab;
public float interval = 0.5f;
float timer;

void Update()
{
    timer += Time.deltaTime;
    if (timer >= interval)
    {
        Instantiate(dropPrefab, transform.position, Quaternion.identity);
        timer -= interval;
    }
}

timer -= interval preserva o tempo restante: se o quadro terminou em 0.51 segundos, a próxima metade de segundo começa a contar a partir de 0.01, e as gotas continuam no ritmo. timer = 0 descartaria esse tempo restante, então cada gota sairia um pouco atrasada, e o atraso aumentaria ao longo de uma partida longa. timer é privado porque ninguém precisa defini-lo no Inspector.

challenge icon

Desafio

Médio

O Dropper deve soltar uma caixa a cada interval segundos (o Inspector indica 2): a primeira caixa 2 segundos após clicar em Play, depois mais uma a cada 2 segundos.

  • Gere cada caixa na posição do dropper, sem rotação.
  • Após cada caixa, registre seu número: Box 1, Box 2 e assim por diante.

Clique em Play e observe a pilha crescer; depois, clique em Check.

Experimente você mesmo

using UnityEngine;

public class BoxDropper : MonoBehaviour
{
    public GameObject boxPrefab;
    public float interval = 1f;

    void Update()
    {
        // A cada interval segundos: soltar uma caixa e registrar "Box 1", "Box 2"...
    }
}
quiz iconTeste seus conhecimentos

Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.

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