InvokeRepeating, CancelInvoke
Fa parte della sezione Fisica e gameplay del percorso Unity di Coddy. Lezione 22 di 63.
InvokeRepeating(nameof(Blink), 0.5f, 0.5f) chiama Blink per la prima volta dopo 0.5 secondi, poi di nuovo ogni 0.5 secondi, finché non viene annullato. Il primo numero è il ritardo prima della prima chiamata, il secondo è il tempo tra una chiamata e l'altra. CancelInvoke(nameof(Blink)) lo interrompe e CancelInvoke(), senza specificare un nome, interrompe ogni Invoke che lo script ha programmato.
Questa spia lampeggia finché non viene premuto Spazio, poi rimane accesa:
Light lamp;
void Start()
{
lamp = GetComponent<Light>();
InvokeRepeating(nameof(Blink), 0.5f, 0.5f);
}
void Blink()
{
lamp.enabled = !lamp.enabled;
}
void Update()
{
if (Input.GetKeyDown(KeyCode.Space))
{
CancelInvoke(nameof(Blink));
lamp.enabled = true;
}
}Il timer del capitolo sulla generazione farebbe lo stesso con un campo float e un controllo in Update(). Con InvokeRepeating, Unity tiene traccia del tempo ed effettua le chiamate. La chiamata a InvokeRepeating va inserita in Start(): in Update() programmerebbe un'altra chiamata ripetuta a ogni frame.
Sfida
FacileIl Geyser lancia in aria la palla che si trova sopra di esso. Il suo script ha ball, power e un conteggio di eruptions. Fai in modo che erutti secondo una pianificazione:
- La prima eruzione avviene 1 secondo dopo aver premuto Gioca, poi ce n’è una ogni 2 secondi.
- Un’eruzione è un metodo chiamato
Erupt: aggiunge 1 aeruptions, spinge la palla verso l’alto conball.AddForce(Vector3.up * power, ForceMode.Impulse)e registraEruption 1,Eruption 2e così via. - Dopo la terza eruzione il geyser si ferma definitivamente.
Premi Gioca e guarda la palla, poi premi Controlla.
Provalo tu
using UnityEngine;
public class Geyser : MonoBehaviour
{
public Rigidbody ball;
public float power = 6f;
int eruptions;
void Start()
{
// Fai eruttare 1 secondo dopo Play, poi ogni 2 secondi
}
// Erupt(): conta, spingi ball verso l'alto, registra nel log; fermati dopo la terza eruzione
}
Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.
Tutte le lezioni di Fisica e gameplay
1Corpo rigido
Gravità e massaSpingi con AddForceSalta con un impulsoFixedUpdate per la fisicaVelocitàCorpi cinematiciRiepilogo: piattaforma di lancio4Coroutine
InvokeInvokeRepeating, CancelInvokeLa tua prima coroutineCicli nelle coroutineInterrompere le coroutineRiepilogo: conto alla rovescia2Collisioni
OnCollisionEnterCosa ho colpito?Rompersi all'impattoRestare a terraRimbalzo e attritoForme dei ColliderRiepilogo: muro distruttibile5Progetto: Corsa alle monete
La palla rotolanteMonete da raccogliere