Menu
CoddyTech

Tworzenie obiektów według timera

Część sekcji Podstawy skryptów w Unity ścieżki Unity w Coddy. Lekcja 49 z 67.

Spawner, który co kilka sekund coś tworzy, potrzebuje timera. Time.deltaTime to czas, jaki zajęła ostatnia klatka, więc dodawanie go do pola przy każdym wywołaniu Update() daje liczbę sekund, które upłynęły. Gdy suma osiągnie interwał, utwórz obiekt i odejmij interwał od sumy.

Ta fontanna wyrzuca kroplę wody co pół sekundy:

public GameObject dropPrefab;
public float interval = 0.5f;
float timer;

void Update()
{
    timer += Time.deltaTime;
    if (timer >= interval)
    {
        Instantiate(dropPrefab, transform.position, Quaternion.identity);
        timer -= interval;
    }
}

timer -= interval zachowuje resztę: jeśli klatka zakończyła się po 0.51 sekundy, następne pół sekundy zaczyna się liczyć od 0.01, a krople pozostają w rytmie. timer = 0 odrzuciłoby tę resztę, więc każda kropla pojawiałaby się z niewielkim opóźnieniem, które narastałoby w trakcie długiej gry. timer jest prywatne, ponieważ nie trzeba go ustawiać w Inspectorze.

challenge icon

Wyzwanie

Średni

Dropper powinien upuszczać pudełko co interval sekund (w Inspektorze jest ustawiona wartość 2): pierwsze pudełko 2 sekundy po naciśnięciu przycisku Play, a następnie kolejne co 2 sekundy.

  • Twórz każde pudełko w pozycji droppera, bez obracania.
  • Po każdym pudełku wyświetlaj jego numer: Box 1, Box 2 i tak dalej.

Naciśnij Play i obserwuj, jak rośnie stos, a następnie naciśnij Check.

Spróbuj swoich sił

using UnityEngine;

public class BoxDropper : MonoBehaviour
{
    public GameObject boxPrefab;
    public float interval = 1f;

    void Update()
    {
        // Co interval sekund: upuść pudełko i zapisz w logu "Box 1", "Box 2"...
    }
}
quiz iconSprawdź się

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

Wszystkie lekcje w sekcji Podstawy skryptów w Unity