Samouczek Unity Cinemachine i osi czasu

Cinemachine to pakiet dla Unity, który zapewnia programistom profesjonalną kontrolę nad kamerą i zwiększa możliwości tworzenia kinowych przerywników filmowych.

W tym samouczku omówione zostaną następujące tematy:

  • Instalacja kinomaszyna
  • Konfiguracja kamery trzeciej osoby
  • Tworzenie przerywników filmowych na osi czasu

Instalacja kinomaszyna

Aby zainstalować Cinemachine, wykonaj poniższe czynności:

  • W Unity przejdź do Okno -> Menedżer pakietów

Menu menedżera pakietów Unity

  • Zmień pakiety na „Unity Rejestr”

Rejestr menedżera pakietów Unity

  • Wybierz "Cinemachine" z listy i kliknij "Install"

Cinemachine jest teraz gotowa do użycia.

Konfiguracja kamery trzeciej osoby

Poniżej pokażę, jak skonfigurować kamerę trzecioosobową za pomocą kamery wirtualnej Cinemachine.

Kamera wirtualna to uproszczona wersja kamery Unity, która nie renderuje samodzielnie, lecz służy jedynie jako punkt odniesienia dla kamery głównej.

Jako przykład w tym samouczku użyję kontrolera trzeciej osoby, z wyjątkiem tego, że nie będzie konfigurowania kolizji kamery ani przesuwania kamery w hierarchii graczy:

Sharp Coder Odtwarzacz wideo

Jak widać, gracz się porusza, ale kamera za nim nie podąża.

Konfigurowanie kamery trzeciej osoby za pomocą Cinemachine jest naprawdę łatwe:

  • Przejdź do GameObject -> Cinemachine -> Kamera wirtualna, aby utworzyć nową wirtualną kamerę

Cinemachine tworzy wirtualną kamerę

  • Nadaj nazwę wirtualnej kamerze "TPS Camera"
  • Wybierz kamerę TPS i w CinemachineVirtualCamera przypisz zmienną Follow (w moim przypadku będzie to obiekt "CameraParent", który znajduje się w hierarchii graczy i reprezentuje rotację wyglądu w pionie)
  • Ustaw wartość Treść na "3rd Person Follow"
  • Ustaw Ignore Tag na "Player", a także wybierz główny obiekt gracza i ustaw jego tag na "Player" (jeśli w hierarchii odtwarzacza znajdują się jakieś zderzacze podrzędne, pamiętaj o zmianie ich tagów również na "Player")
  • Dostosuj inne wartości w CinemachineVirtualCamera, takie jak odległość kamery, bok kamery, przesunięcie ramion i tłumienie, aż będziesz zadowolony z wyniku.
  • Ustaw wartość Celowania CameraParent na "Do nothing"

Wartości komponentów CinemachineVirtualCamera

Kamera powinna teraz podążać za graczem:

Sharp Coder Odtwarzacz wideo

Tworzenie przerywników filmowych na osi czasu

Tutaj pokażę, jak skomponować przerywnik filmowy przy użyciu osi czasu Unity's.

Oś czasu to wbudowany edytor, który umożliwia programistom komponowanie przerywników filmowych poprzez animację kamery, a także wykorzystanie istniejących animacji (np. spaceru postaci) oraz zdarzeń i sygnałów poprzez ułożenie ich w sposób sekwencyjny.

Pakiet Cinemachine dodaje kilka dodatkowych opcji do edytora osi czasu, takich jak możliwość przełączania pomiędzy kamerami wirtualnymi.

Aby utworzyć przerywnik filmowy, wykonaj poniższe czynności:

  • Utwórz nowy obiekt GameObject i wywołaj go "TimelineManager"
  • Otwórz okno Oś czasu, przechodząc do Okno -> Sekwencjonowanie -> Oś czasu

Menu osi czasu sekwencjonowania okna Unity

  • Wybierz obiekt "TimelineManager" i w oknie Oś czasu powinna pojawić się opcja utworzenia komponentu Director i zasobu Osi czasu, kliknij ją.

Cinemachine tworzy komponent reżysera i zasób osi czasu

  • Po utworzeniu komponentu Director i zasobu Timeline powinno pojawić się puste okno Timeline (upewnij się, że obiekt TimelineManager jest zaznaczony, aby móc go edytować).

Okno osi czasu Cinemachine

  • Możemy teraz rozpocząć dodawanie komponentów do osi czasu, klikając okno prawym przyciskiem myszy.

Tworzenie komponentów osi czasu

Jak widać, okno Oś czasu ma różne opcje:

  • Grupa śledzenia — jest to grupa, która może zawierać działania na osi czasu i jest przydatna do organizowania.
  • Ścieżka Aktywacji - definiuje obiekt, który powinien być aktywny tylko w określonym przedziale czasowym.
  • Ścieżka animacji — odtwarza określoną animację w ustalonych ramach czasowych.
  • Ścieżka audio — odtwarza określony dźwięk w ustalonych ramach czasowych.
  • Control Track - ścieżka, której klipy kontrolują elementy związane z czasem w GameObject.
  • Signal Track - umożliwia wykonanie szerokiej gamy akcji na konkretnym obiekcie gry w określonym czasie (np. aktywacja skryptu ruchu gracza lub wywołanie określonej funkcji, gdy oś czasu osiągnie określoną klatkę itp.)
  • Odtwarzany utwór — utwór, którego klipy można odtwarzać samodzielnie.
  • Ścieżka Cinemachine — pozwala na połączenie wielu wirtualnych kamer Cinemachine.

Na potrzeby tego samouczka będę używać tylko ścieżki animacji i ścieżki sygnału.

Organizować coś

  • Utwórz kolejną wirtualną kamerę i nadaj jej nazwę "CutsceneCamera" i ustaw jej wartość "Priority" na jeden poziom powyżej "TPS Camera" (np. 11)
  • Kliknij prawym przyciskiem myszy w widoku projektu -> Utwórz -> Sygnał i nazwij go "DisablePlayer"

Unity tworzy sygnał osi czasu

  • Zduplikuj sygnał "DisablePlayer" i zmień jego nazwę na "EnablePlayer"

Zasoby sygnału osi czasu Unity

  • Utwórz nowy obiekt GameObject na scenie i nadaj mu nazwę "SignalReceiver"
  • Dołącz komponent SignalReceiver do obiektu "SignalReceiver"
  • Kliknij "Add Reaction" 2 razy
  • Przypisz "DisablePlayer" do pierwszej reakcji i "EnablePlayer" do drugiej reakcji

Reakcja na dodanie sygnału na osi czasu Unity

"DisablePlayer" aktywuje kamerę przerywnikową, dezaktywuje kamerę gracza i skrypt sterujący graczem i zostanie umieszczony na początku osi czasu.

"EnablePlayer" wyłączy kamerę przerywnikową, aktywuje kamerę gracza i skrypt sterujący graczem i zostanie umieszczony na końcu osi czasu.

  • Kliknij (+), aby dodać miejsce na reakcję, a następnie przypisz obiekt, którego skrypt lub komponent wymagał aktywacji/dezaktywacji.

Wskazówka: Aby utworzyć sygnał przeciwny, możesz po prostu ustawić reakcje dla "DisablePlayer", a następnie kliknąć ikonę koła zębatego -> Duplikuj, zmienić sygnał na "EnablePlayer" i odwrócić pola wyboru.

Duplikat sygnału Unity

Konfiguracja reakcji na sygnał na osi czasu Unity

  • Wybierz obiekt "TimelineManager", a następnie w oknie Oś czasu dodaj nową ścieżkę sygnału, klikając prawym przyciskiem myszy -> Ścieżka sygnału, a następnie przypisz do niego obiekt "SignalReceiver".
  • Przeciągnij i upuść "DisablePlayer" zasób sygnału na początku osi czasu oraz "EnablePlayer" do klatki, w której chcesz zakończyć przerywnik filmowy:

Podgląd sygnału osi czasu Unity

Spowoduje to, że skrypt kontrolera gracza i kamera zostaną dezaktywowane na początku, a następnie ponownie aktywowane, gdy oś czasu dotrze do końca.

Na koniec stworzymy prostą animację kamery.

  • Kliknij prawym przyciskiem myszy Oś czasu -> Ścieżka animacji, a następnie przypisz "CutsceneCamera" (spowoduje to monit o dodanie komponentu Animator do obiektu, jeśli go nie ma)
  • Kliknij przycisk nagrywania

Nagranie klipu animacji na osi czasu Unity

  • Przesuń nieznacznie "CutsceneCamera", aby zastosować klatkę kluczową, następnie przesuń uchwyt klatki osi czasu do końca, a na koniec przesuń kamerę do nowej pozycji, a następnie kliknij przycisk Zatrzymaj nagrywanie.

Oś czasu przerywników filmowych Unity Cinemachine

Naciśnijmy przycisk odtwarzania i zobaczmy wynik:

Sharp Coder Odtwarzacz wideo

Na początku gry odtwarzana jest scenka przerywnikowa.

Sugerowane artykuły
Samouczek gamepada dla Unity
Jak malować drzewa na terenie w Unity
Jak importować animacje do Unity
Niezbędne zasoby ogólnego przeznaczenia dla Unity
Budowanie interaktywnego systemu menu w Unity
Opanowanie komponentu transformacji Unity
Wybór odpowiedniego Skyboxa dla Twojego środowiska w Unity