Menu
CoddyTech

Invoke

Termasuk bagian Fisika dan Gameplay dalam perjalanan Unity di Coddy. Pelajaran 22 dari 71.

Invoke("Explode", 3f) memanggil method milik skrip itu sendiri, yaitu Explode, satu kali, 3 detik dari sekarang, lalu kode setelahnya langsung dilanjutkan. Unity menemukan method berdasarkan namanya, yang diberikan sebagai string, dan method tersebut tidak menerima parameter. Bom ini meledak 3 detik setelah game dimulai:

void Start()
{
    Invoke("Explode", 3f);
}

void Explode()
{
    Debug.Log("Boom");
    Destroy(gameObject);
}

Karena namanya berupa string, compiler tidak dapat memeriksanya. Invoke("Explod", 3f) berhasil di-compile, lalu 3 detik kemudian Unity mencatat Trying to Invoke method: Bomb.Explod couldn't be called. alih-alih meledak. nameof milik C# mengatasi masalah itu: nameof(Explode) adalah string "Explode", yang dibuat oleh compiler dari nama yang sudah diperiksanya, jadi kesalahan ketik di dalamnya akan menjadi error compile yang kamu lihat sebelum game berjalan. Tulis Invoke(nameof(Explode), 3f);.

challenge icon

Tantangan

Mudah

Buat platform runtuh sesaat setelah pemain mendarat di atasnya.

  1. Di OnCollisionEnter, saat collision.gameObject.CompareTag("Player"), panggil Invoke(nameof(Fall), delay);.
  2. Tambahkan void Fall(): atur body.isKinematic = false; dan catat Crumble!.

Tekan tombol “Main” dan berjalanlah ke atas platform: satu detik kemudian platform itu jatuh. Lalu tekan tombol “Periksa”.

Coba sendiri

using UnityEngine;

public class Crumble : MonoBehaviour
{
    public float delay = 1f;
    Rigidbody body;

    void Start()
    {
        body = GetComponent<Rigidbody>();
    }

    void OnCollisionEnter(Collision collision)
    {
        // Saat pemain mendarat: buat platform jatuh setelah delay detik
    }

    // Fall(): aktifkan fisika platform dan catat Crumble!
}

Semua pelajaran di Fisika dan Gameplay

Latihan sendiri: Playground Unity