Unity Cinemachine och tidslinjehandledning
Cinemachine är ett paket för Unity som ger utvecklare professionell kamerakontroll och förbättrar möjligheten att skapa filmiska mellansekvenser.
Denna handledning kommer att täcka följande ämnen:
- Cinemachine installation
- Tredje persons kamerainställningar
- Tidslinje skapande av cutscene
Cinemachine installation
För att installera Cinemachine, följ stegen nedan:
- Gå till Fönster -> Pakethanteraren i Unity
- Ändra paket till "Unity register"
- Välj "Cinemachine" från listan och klicka sedan "Install"
Cinemachine är nu redo att användas.
Tredje persons kamerainställningar
Nedan kommer jag att visa hur man ställer in en 3:e persons kamera med Cinemachines virtuella kamera.
En virtuell kamera är en lättviktsversion av en Unity-kamera, som inte renderas på egen hand, utan bara används som referenspunkt för huvudkameran.
Som ett exempel för den här handledningen kommer jag att använda en tredjepersonskontroll, förutom utan att ställa in kamerakollisionen och utan att flytta kameran in i spelarhierarkin:
Som du kan se rör sig spelaren men kameran följer inte med.
Att ställa in en tredjepersonskamera med Cinemachine är väldigt enkelt:
- Gå till GameObject -> Cinemachine -> Virtuell kamera för att skapa en ny virtuell kamera
- Namnge den virtuella kameran "TPS Camera"
- Välj TPS-kamera och tilldela Följ-variabel i CinemachineVirtualCamera (i mitt fall kommer det att vara "CameraParent"-objekt, som finns i en spelarhierarki och representerar vertikal utseenderotation)
- Ställ in Kroppsvärdet till "3rd Person Follow"
- Ställ in Ignorera tagg till "Player" och välj även spelarens rotobjekt och ställ in dess tagg till "Player" (om det finns några underordnade kolliderare i spelarhierarkin, se till att ändra deras taggar till "Player" också)
- Justera andra värden i CinemachineVirtualCamera som kameraavstånd, kamerasida, skulderförskjutning och dämpning tills du är nöjd med resultatet.
- Ställ in Siktvärde för CameraParent till "Do nothing"
Kameran bör nu följa spelaren:
Tidslinje skapande av cutscene
Här kommer jag att visa hur man komponerar en mellansekvens med Unity's tidslinje.
Timeline är en inbyggd redigerare som gör det möjligt för utvecklare att komponera mellansekvenser genom att animera kameran, och även genom att använda befintliga animationer (ex. karaktärspromenad), plus händelser och signaler genom att arrangera dem på ett sekventiellt sätt.
Cinemachine-paketet lägger till några extra alternativ till en tidslinjeredigerare, till exempel möjligheten att växla mellan virtuella kameror.
För att skapa en mellansekvens, följ stegen nedan:
- Skapa ett nytt GameObject och anropa det "TimelineManager"
- Öppna tidslinjefönstret genom att gå till Fönster -> Sekvensering -> Tidslinje
- Välj "TimelineManager" Objekt och i tidslinjefönstret bör du se ett alternativ för att skapa en Director-komponent och tidslinjetillgång, klicka på den.
- När du har skapat Director-komponenten och tidslinjetillgången bör du se det tomma tidslinjefönstret (se till att TimelineManager-objektet är markerat för att kunna redigera det).
- Vi kan nu börja lägga till komponenter till tidslinjen genom att högerklicka på fönstret.
Som du kan se har tidslinjefönstret olika alternativ:
- Spåra grupp – det här är en grupp som kan innehålla tidslinjeåtgärder och är användbar för att organisera.
- Aktiveringsspår - detta definierar objektet som endast ska vara aktivt under en viss tidsram.
- Animationsspår – detta kommer att spela upp en specifik animation under en viss tidsram.
- Ljudspår – detta spelar upp specifikt ljud under en viss tidsram.
- Kontrollspår - ett spår vars klipp styr tidsrelaterade element på ett GameObject.
- Signalspår – detta gör det möjligt att utföra en mängd olika åtgärder på ett specifikt spelobjekt vid en specifik tidpunkt (t.ex. aktivera spelarens rörelseskript eller anropa en specifik funktion när tidslinjen når en viss bildruta, etc.)
- Spelbart spår - ett spår vars klipp är anpassade spelbara.
- Cinemachine Track - detta gör det möjligt att blanda mellan flera virtuella filmkameror.
För syftet med denna handledning kommer jag bara att använda Animationsspår och Signalspår.
Uppstart
- Skapa en annan virtuell kamera och döp den till "CutsceneCamera" och ställ in dess "Priority"-värde till en nivå över "TPS Camera" (ex. 11)
- Högerklicka i projektvyn -> Skapa -> Signal och namnge det "DisablePlayer"
- Duplicera "DisablePlayer"-signalen och byt namn på den till "EnablePlayer"
- Skapa ett nytt GameObject i scenen och namnge det "SignalReceiver"
- Fäst signalmottagarkomponent till ett "SignalReceiver"-objekt
- Klicka på "Add Reaction" två gånger
- Tilldela "DisablePlayer" till en första reaktion och "EnablePlayer" till en andra reaktion
"DisablePlayer" kommer att aktivera mellansekvenskameran, inaktivera spelarkameran och spelarkontrollskriptet och kommer att placeras i början av tidslinjen.
"EnablePlayer" kommer att inaktivera mellansekvenskameran, aktivera spelarkameran och spelarkontrollskriptet och placeras i slutet av tidslinjen.
- Klicka på (+) för att lägga till en reaktionsplats och tilldela sedan objektet vars skript eller komponent behövde aktiveras/avaktiveras.
Tips: För att skapa en motsatt signal kan du bara ställa in reaktionerna för "DisablePlayer" och sedan klicka på kugghjulsikonen -> Duplicera, ändra signalen till "EnablePlayer" och invertera kryssrutorna.
- Välj "TimelineManager" objekt och lägg sedan till ett nytt signalspår i tidslinjefönstret genom att högerklicka på -> Signalspår och tilldela sedan "SignalReceiver" objekt till det.
- Dra och släpp "DisablePlayer" signaltillgång i början av tidslinjen och "EnablePlayer" till den bildruta du vill att sekvensen ska sluta:
Detta kommer att göra spelarens kontrollmanus och kameran avaktiverade i början och sedan återaktiveras när tidslinjen når slutet.
Slutligen ska vi skapa en enkel kameraanimation.
- Högerklicka på Tidslinje -> Animationsspår och tilldela sedan "CutsceneCamera" (detta kommer att be om att lägga till Animator-komponent till objektet om det inte finns någon)
- Klicka på inspelningsknappen
- Flytta "CutsceneCamera" något så att nyckelbilden appliceras, flytta sedan tidslinjens ramhandtag till slutet, och slutligen flyttar du kameran till en ny position och klickar sedan på Stoppa inspelning.
Låt oss trycka på play och se resultatet:
Scenen spelas i början av spelet.