Gerar objetos com um temporizador
Parte da seção Fundamentos de Scripting no Unity do Journey de Unity da Coddy. Lição 63 de 85.
Um gerador que cria algo a cada poucos segundos precisa de um temporizador. Time.deltaTime é o tempo que o último quadro levou, então somá-lo em um campo a cada Update() dá o total de 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 restante: se o quadro terminar em 0.51 segundos, a próxima metade do segundo começa a ser contada a partir de 0.01, e as gotas mantêm o ritmo. timer = 0 descartaria esse restante, então cada gota chegaria um pouco atrasada e o atraso se acumularia ao longo de uma partida longa. timer é privado porque ninguém precisa defini-lo no Inspector.
Desafio
MédioSolte uma caixa a cada interval segundos (2 no Inspector).
- Adicione os campos
float timer;eint count;. EmUpdate(), adicioneTime.deltaTimeatimer. - Quando
timer >= interval, chameInstantiate(boxPrefab, transform.position, Quaternion.identity);e subtraiaintervaldetimer. - Então, adicione 1 a
counte registre"Box " + count.
Pressione “Jogar”: uma caixa cai a cada 2 segundos, e o Console conta Box 1, Box 2. Em seguida, pressione “Verificar”.
Experimente você mesmo
using UnityEngine;
public class BoxDropper : MonoBehaviour
{
public GameObject boxPrefab;
public float interval = 1f;
void Update()
{
// A cada interval segundos: solte uma caixa e registre "Box 1", "Box 2"...
}
}
Todas as lições de Fundamentos de Scripting no Unity
1Fundamentos de C# no Unity
Olá, UnityVariáveisDecimais precisam de um fTexto no ConsoleVariáveis que guardam valoresIf e ElseComparar númerosRevisão: Coletor de Moedas7Laços e Métodos
Repita com forLaços dentro de laçosEscreva um métodoMétodos que respondemArraysRevisão: Escada10Encontrando coisas
Buscar pelo nomeTagsBuscar por tipoReferências são melhores que FindO null do UnityRevisão: moeda mais próxima13Projeto: Desvie dos Blocos
O CorredorBlocos do Céu2Faça-o se mover
Posicione o cuboMova a cada quadroGire a cada segundoDirija com as teclasRecapitulando: dirija o cubo5Vetores
Somando vetoresDireçõesEspaço local e globalVelocidade diagonalDistância entre objetosVector3 é uma structRevisão: piloto de drone8GameObjects e Componentes
Referências no InspectorObter um componenteComponentes ausentesAdicionar um componenteRequireComponentMostrar e ocultarRevisão: Interruptor de luz11Prefabs e geração de objetos
Prefabs e InstantiateGerar objetos com um temporizadorGerar objetos em uma gradeListas de objetosRemover o mais recenteDestruirGeração aleatória de objetosRevisão: fogos de artifício6Transformações e hierarquia
Pais e filhosIçar a bandeiraEscalaOlhar para as coisasMover-se em direção a um pontoRevisão: Lua em órbita9Projeto: Pegue a Estrela
O PegadorUma Estrela CadentePratique por conta própria: Playground de Unity