Menu
CoddyTech

Çağırma

Coddy'nin Unity Journey'sinin Fizik ve Oynanış bölümünün bir parçası. Ders 22 / 71.

Invoke("Explode", 3f), 3 saniye sonra betiğin kendi Explode metodunu bir kez çağırır ve sonrasındaki kod hemen çalışmaya devam eder. Unity, metodu dize olarak verilen adıyla bulur ve metot parametre almaz. Bu bomba, oyun başladıktan 3 saniye sonra patlar:

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

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

Ad bir dize olduğundan derleyici bunu denetleyemez. Invoke("Explod", 3f) derlenir ve 3 saniye sonra Unity patlamak yerine Trying to Invoke method: Bomb.Explod couldn't be called. mesajını günlüğe yazar. C#'taki nameof bunu düzeltir: nameof(Explode), derleyicinin denetlediği bir addan oluşturduğu "Explode" dizesidir; dolayısıyla içindeki bir yazım hatası, oyun çalışmadan önce göreceğiniz bir derleme hatasına yol açar. Invoke(nameof(Explode), 3f); yazın.

challenge icon

Görev

Kolay

Oyuncu üzerine indikten kısa süre sonra platformun çökmesini sağla.

  1. OnCollisionEnter içinde, collision.gameObject.CompareTag("Player") olduğunda Invoke(nameof(Fall), delay); çağır.
  2. void Fall() ekle: body.isKinematic = false; ayarla ve Crumble! mesajını günlüğe yaz.

“Oyna” düğmesine bas ve platformun üzerine yürü: bir saniye sonra platform düşer. Ardından “Kontrol et” düğmesine bas.

Kendin dene

using UnityEngine;

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

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

    void OnCollisionEnter(Collision collision)
    {
        // Oyuncu platforma indiğinde: platformun delay saniye sonra düşmesini sağla
    }

    // Fall(): platformun fiziğini etkinleştir ve Crumble! mesajını günlüğe kaydet
}

Fizik ve Oynanış bölümündeki tüm dersler

Kendi başına pratik yap: Unity playground