InvokeRepeating, CancelInvoke
Termasuk bagian Fisika dan Gameplay dalam perjalanan Unity di Coddy. Pelajaran 22 dari 63.
InvokeRepeating(nameof(Blink), 0.5f, 0.5f) memanggil Blink untuk pertama kali setelah 0.5 detik, lalu memanggilnya lagi setiap 0.5 detik sampai dibatalkan. Angka pertama adalah jeda sebelum pemanggilan pertama, angka kedua adalah jeda antar-pemanggilan. CancelInvoke(nameof(Blink)) menghentikannya, sedangkan CancelInvoke() tanpa nama menghentikan semua Invoke yang telah dijadwalkan oleh script.
Lampu peringatan ini berkedip sampai tombol Space ditekan, lalu tetap menyala:
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;
}
}Timer dari bab tentang pemunculan objek juga bisa melakukan hal yang sama dengan field float dan pemeriksaan di Update(). Dengan InvokeRepeating, Unity mencatat waktunya dan melakukan pemanggilan. Pemanggilan InvokeRepeating diletakkan di Start(): jika diletakkan di Update(), pemanggilan berulang baru akan dijadwalkan pada setiap frame.
Tantangan
MudahGeyser melempar bola yang berada di atasnya ke udara. Script-nya memiliki ball, power, dan hitungan eruptions. Buat agar geyser meletus sesuai jadwal:
- Letusan pertama terjadi 1 detik setelah Play, lalu satu letusan setiap 2 detik.
- Letusan adalah method bernama
Erupt: method ini menambahkan 1 keeruptions, mendorong bola ke atas denganball.AddForce(Vector3.up * power, ForceMode.Impulse), lalu mencatatEruption 1,Eruption 2, dan seterusnya. - Setelah letusan ketiga, geyser berhenti selamanya.
Tekan Play dan amati bola, lalu tekan Periksa.
Coba sendiri
using UnityEngine;
public class Geyser : MonoBehaviour
{
public Rigidbody ball;
public float power = 6f;
int eruptions;
void Start()
{
// Mulai erupsi 1 detik setelah Play, lalu setiap 2 detik
}
// Erupt(): hitung erupsi, dorong ball ke atas, lalu catat di log; berhenti setelah erupsi ketiga
}
Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.
Semua pelajaran di Fisika dan Gameplay
1Rigidbody
Gravitasi dan MassaDorong dengan AddForceMelompat dengan ImpulsFixedUpdate untuk FisikaKecepatanBenda KinematikRingkasan: Landasan Peluncur4Coroutine
InvokeInvokeRepeating, CancelInvokeCoroutine PertamamuPerulangan dalam CoroutineMenghentikan CoroutineRangkuman: Hitung Mundur2Tabrakan
OnCollisionEnterApa yang Kutabrak?Pecah Saat BenturanBerdiri di Atas TanahPantulan dan GesekanBentuk ColliderRangkuman: Dinding yang Bisa Hancur