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

Unity Package Manager-meny

  • Ändra paket till "Unity register"

Unity Package Manager 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:

Sharp Coder Videospelare

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

Cinemachine skapar 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"

CinemachineVirtualCamera komponentvärden

Kameran bör nu följa spelaren:

Sharp Coder Videospelare

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

Unity Window Sequencing Timeline Menu

  • 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.

Cinemachine skapar Director-komponent och en tidslinjetillgång

  • 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).

Cinemachine tidslinjefönster

  • Vi kan nu börja lägga till komponenter till tidslinjen genom att högerklicka på fönstret.

Skapa tidslinjekomponenter

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"

Unity Skapa tidslinjesignal

  • Duplicera "DisablePlayer"-signalen och byt namn på den till "EnablePlayer"

Unity Timeline Signal Assets

  • 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

Unity Timeline Signal Lägg till 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.

Unity Duplicate Signal

Unity Timeline Signal Reaction Setup

  • 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:

Unity Timeline Signal Preview

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

Unity Timeline Animation Clip Record

  • 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.

Unity Cinemachine Cutscene tidslinje

Låt oss trycka på play och se resultatet:

Sharp Coder Videospelare

Scenen spelas i början av spelet.

Föreslagna artiklar
Jämför 2D- och 3D-utvecklingsmiljöer i Unity
Unity Scripting API och Unity Pro
Hur man målar träd på terräng i Unity
Hur man importerar animationer till Unity
Att välja rätt Skybox för din miljö i Unity
Strategier för att skydda Unity Games från piratkopiering
Hur man gör ett FNAF-inspirerat spel i Unity