Menu
CoddyTech

Wywoływanie

Część sekcji Fizyka i rozgrywka ścieżki Unity w Coddy. Lekcja 21 z 63.

Invoke("Explode", 3f) wywołuje własną metodę skryptu Explode jeden raz, za 3 sekundy, a kod znajdujący się za nią wykonuje się od razu. Unity znajduje metodę na podstawie jej nazwy podanej jako ciąg znaków, a metoda nie przyjmuje żadnych parametrów. Ta bomba wybucha 3 sekundy po rozpoczęciu gry:

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

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

Ponieważ nazwa jest ciągiem znaków, kompilator nie może jej sprawdzić. Invoke("Explod", 3f) kompiluje się, a 3 sekundy później Unity zapisuje w logu Trying to Invoke method: Bomb.Explod couldn't be called. zamiast doprowadzić do wybuchu. C# oferuje nameof, które rozwiązuje ten problem: nameof(Explode) to ciąg znaków "Explode", utworzony przez kompilator na podstawie sprawdzonej przez niego nazwy, więc literówka w nim powoduje błąd kompilacji widoczny przed uruchomieniem gry. Napisz Invoke(nameof(Explode), 3f);.

challenge icon

Wyzwanie

Łatwy

Platforma między dwiema półkami jest rozpadająca się. Jej Rigidbody jest kinematyczny, więc wisi w powietrzu. Napisz jej skrypt Crumble:

  • Gdy gracz na niej wyląduje, odczekuje delay sekund (1 w Inspectorze), a następnie spada.
  • Spadanie obsługuje metoda o nazwie Fall: włącza fizykę platformy (isKinematic = false) i zapisuje w logu Crumble!.
  • Zanim gracz jej dotknie, platforma pozostaje na swoim miejscu.

Użyj nameof dla nazwy metody. Naciśnij Play i wejdź na platformę, używając strzałek, a następnie naciśnij Check.

Spróbuj swoich sił

using UnityEngine;

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

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

    void OnCollisionEnter(Collision collision)
    {
        // Gdy gracz wyląduje: spraw, by platforma spadła po delay sekundach
    }

    // Fall(): włącz fizykę platformy i zapisz Crumble! w logu
}
quiz iconSprawdź się

Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.

Wszystkie lekcje w sekcji Fizyka i rozgrywka