Unity Cinemachine og Timeline Tutorial
Cinemachine er en pakke til Unity, der giver udviklere professionel kamerakontrol og forbedrer muligheden for at skabe filmiske mellemsekvenser.
Denne vejledning vil dække følgende emner:
- Cinemachine installation
- Tredjepersons kameraopsætning
- Oprettelse af tidslinje Cutscene
Cinemachine installation
Følg nedenstående trin for at installere Cinemachine:
- I Unity skal du gå til Window -> Package Manager
- Skift pakker til "Unity Registry"
- Vælg "Cinemachine" fra listen og klik derefter "Install"
Cinemachine er nu klar til brug.
Tredjepersons kameraopsætning
Nedenfor vil jeg vise, hvordan man opsætter et 3.-persons kamera ved hjælp af Cinemachines virtuelle kamera.
Et virtuelt kamera er en letvægtsversion af et Unity kamera, der ikke gengives alene, men blot bruges som referencepunkt for hovedkameraet.
Som et eksempel til denne øvelse vil jeg bruge en tredjepersonscontroller, undtagen uden at konfigurere kamerakollisionen og uden at flytte kameraet inde i spillerhierarkiet:
Som du kan se, bevæger afspilleren sig, men kameraet følger ikke med.
Opsætning af et tredjepersonskamera ved hjælp af Cinemachine er virkelig nemt:
- Gå til GameObject -> Cinemachine -> Virtuelt kamera for at oprette et nyt virtuelt kamera
- Navngiv det virtuelle kamera "TPS Camera"
- Vælg TPS-kamera, og tildel Follow-variabel i CinemachineVirtualCamera (i mit tilfælde vil det være "CameraParent" objekt, som er placeret inde i et spillerhierarki og repræsenterer lodret udseenderotation)
- Indstil Body værdi til "3rd Person Follow"
- Indstil Ignorer tag til "Player" og vælg også spillerens rodobjekt og sæt dets tag til "Player" (hvis der er nogen underordnede kollidere i spillerhierarkiet, så sørg for at ændre deres tags til "Player" også)
- Juster andre værdier i CinemachineVirtualCamera såsom kameraafstand, kameraside, skulderforskydning og dæmpning, indtil du er tilfreds med resultatet.
- Indstil Målværdi for CameraParent til "Do nothing"
Kameraet skulle nu følge afspilleren:
Oprettelse af tidslinje Cutscene
Her vil jeg vise, hvordan man komponerer en cutscene ved hjælp af Unity's Timeline.
Timeline er en indbygget editor, der gør det muligt for udviklere at komponere mellemsekvenser ved at animere kameraet og også ved at bruge eksisterende animationer (f.eks. karaktervandring), plus begivenheder og signaler ved at arrangere dem på en sekventiel måde.
Cinemachine-pakken tilføjer et par ekstra muligheder til en tidslinjeeditor, såsom muligheden for at skifte mellem virtuelle kameraer.
Følg nedenstående trin for at oprette en cutscene:
- Opret et nyt GameObject og kald det "TimelineManager"
- Åbn tidslinjevinduet ved at gå til Vindue -> Sekvensering -> Tidslinje
- Vælg "TimelineManager" Objekt, og i tidslinjevinduet skulle du se en mulighed for at oprette en Director-komponent og tidslinjeaktiv, klik på den.
- Efter at have oprettet Director-komponenten og Timeline-aktivet, bør du se det tomme Timeline-vindue (sørg for, at TimelineManager-objektet er valgt for at kunne redigere det).
- Vi kan nu begynde at tilføje komponenter til tidslinjen ved at højreklikke på vinduet.
Som du kan se, har tidslinjevinduet forskellige muligheder:
- Spor gruppe - dette er en gruppe, der kan indeholde tidslinjehandlinger og er nyttig til at organisere.
- Aktiveringsspor - dette definerer det objekt, der kun skal være aktivt i en fastsat tidsramme.
- Animationsspor - dette vil afspille en specifik animation inden for en fastsat tidsramme.
- Lydspor - dette vil afspille specifik lyd inden for en fastsat tidsramme.
- Kontrolspor - et spor, hvis klip styrer tidsrelaterede elementer på et GameObject.
- Signal Track - dette giver mulighed for at udføre en bred vifte af handlinger på et specifikt spilobjekt på et bestemt tidspunkt (f.eks. aktivering af spillerbevægelsesscript eller kald en specifik funktion, når tidslinjen når en bestemt ramme osv.)
- Afspilbart spor - et spor, hvis klip er brugerdefinerede afspilbare.
- Cinemachine Track - dette gør det muligt at blande flere virtuelle cinemachine-kameraer.
Til formålet med denne tutorial vil jeg kun bruge Animationsspor og Signalspor.
Opsætning
- Opret endnu et virtuelt kamera og navngiv det "CutsceneCamera" og indstil dets "Priority" værdi til et niveau over "TPS Camera" (f.eks. 11)
- Højreklik i projektvisning -> Opret -> Signal og navngiv det "DisablePlayer"
- Dupliker "DisablePlayer" signal og omdøb det til "EnablePlayer"
- Opret et nyt GameObject i scenen og navngiv det "SignalReceiver"
- Tilslut SignalReceiver-komponent til et "SignalReceiver" objekt
- Klik "Add Reaction" 2 gange
- Tildel "DisablePlayer" til en første reaktion og "EnablePlayer" til en anden reaktion
"DisablePlayer" aktiverer cutscene-kameraet, deaktiverer afspillerens kamera og spillerkontrolscriptet og placeres i starten af tidslinjen.
"EnablePlayer" vil deaktivere cutscene-kameraet, aktivere afspillerens kamera og spillerkontrolscriptet og placeres i slutningen af tidslinjen.
- Klik på (+) for at tilføje en reaktionsplads, og tildel derefter det objekt, hvis script eller komponent skulle aktiveres/deaktiveres.
Tip: For at oprette et modsat signal kan du bare konfigurere reaktionerne for "DisablePlayer" og derefter klikke på Gear-ikonet -> Dupliker, ændre signalet til "EnablePlayer" og invertere afkrydsningsfelterne.
- Vælg "TimelineManager" objekt og tilføj derefter et nyt signalspor i tidslinjevinduet ved at højreklikke -> Signalspor og tildel derefter "SignalReceiver" objekt til det.
- Træk og slip "DisablePlayer" signalaktiv ved starten af tidslinjen og "EnablePlayer" til det billede, du vil have cutscenen til at slutte:
Dette vil gøre afspillerens controller-script og kameraet deaktiveret i begyndelsen og derefter genaktiveret, når tidslinjen når slutningen.
Til sidst skal vi lave en simpel kameraanimation.
- Højreklik på Tidslinje -> Animationsspor og tildel derefter "CutsceneCamera" (dette vil bede om at tilføje Animator-komponent til objektet, hvis der ikke er nogen)
- Klik på optag-knappen
- Flyt "CutsceneCamera" lidt, så keyframen anvendes, flyt derefter tidslinjerammehåndtaget til slutningen, og til sidst flytter du kameraet til en ny position, og klik på stop optagelse.
Lad os trykke på play og se resultatet:
Cutscenen spilles i begyndelsen af spillet.