Unity Cinemachine og tidslinjeopplæring
Cinemachine er en pakke for Unity som gir utviklere profesjonell kamerakontroll og forbedrer muligheten til å lage filmatiske filmsekvenser.
Denne opplæringen vil dekke følgende emner:
- Cinemachine installasjon
- Tredjepersons kameraoppsett
- Timeline Cutscene Creation
Cinemachine installasjon
Følg trinnene nedenfor for å installere Cinemachine:
- I Unity går du til Vindu -> Pakkebehandling
- Endre pakker til "Unity register"
- Velg "Cinemachine" fra listen og klikk "Install"
Cinemachine er nå klar til bruk.
Tredjepersons kameraoppsett
Nedenfor vil jeg vise hvordan du setter opp et 3. persons kamera ved hjelp av Cinemachines virtuelle kamera.
Et virtuelt kamera er en lettvektsversjon av et Unity kamera, som ikke gjengir seg selv, men bare brukes som et referansepunkt for hovedkameraet.
Som et eksempel for denne opplæringen vil jeg bruke en tredjepersonskontroller, bortsett fra uten å sette opp kamerakollisjonen og uten å flytte kameraet inne i spillerhierarkiet:
Som du kan se beveger spilleren seg, men kameraet følger ikke med.
Å sette opp et tredjepersonskamera med Cinemachine er veldig enkelt:
- Gå til GameObject -> Cinemachine -> Virtuelt kamera for å lage et nytt virtuelt kamera
- Gi det virtuelle kameraet et navn "TPS Camera"
- Velg TPS-kamera og i CinemachineVirtualCamera tilordne Følg-variabel (i mitt tilfelle vil det være "CameraParent" objekt, som er plassert inne i et spillerhierarki og representerer vertikal utseenderotasjon)
- Sett Kroppsverdi til "3rd Person Follow"
- Sett Ignorer tag til "Player" og velg også spillerens rotobjekt og sett taggen til "Player" (hvis det er noen barnekolliderer i spillerhierarkiet, sørg for å endre taggene deres til "Player" også)
- Juster andre verdier i CinemachineVirtualCamera som kameraavstand, kameraside, skulderforskyvning og demping til du er fornøyd med resultatet.
- Sett Målverdi for CameraParent til "Do nothing"
Kameraet skal nå følge spilleren:
Timeline Cutscene Creation
Her skal jeg vise hvordan du komponerer en filmsekvens ved å bruke Unity's tidslinje.
Timeline er en innebygd editor som gjør det mulig for utviklere å komponere filmsekvenser ved å animere kameraet, og også ved å bruke eksisterende animasjoner (f.eks. karaktervandring), pluss hendelser og signaler ved å arrangere dem på en sekvensiell måte.
Cinemachine-pakken legger til noen ekstra alternativer til en tidslinjeredigerer, for eksempel muligheten til å bytte mellom virtuelle kameraer.
For å lage en filmsekvens, følg trinnene nedenfor:
- Lag et nytt GameObject og kall det "TimelineManager"
- Åpne tidslinjevinduet ved å gå til Vindu -> Sekvensering -> Tidslinje
- Velg "TimelineManager" Objekt, og i tidslinjevinduet bør du se et alternativ for å opprette en direktørkomponent og tidslinjeelement, klikk på den.
- Etter å ha opprettet Director-komponenten og Timeline-elementet, bør du se det tomme tidslinjevinduet (sørg for at TimelineManager-objektet er valgt for å kunne redigere det).
- Vi kan nå begynne å legge til komponenter til tidslinjen ved å høyreklikke på vinduet.
Som du kan se, har tidslinjevinduet forskjellige alternativer:
- Spor gruppe – dette er en gruppe som kan inneholde tidslinjehandlinger og er nyttig for organisering.
- Aktiveringsspor - dette definerer objektet som bare skal være aktivt i løpet av en fastsatt tidsramme.
- Animasjonsspor – dette vil spille av en spesifikk animasjon i løpet av en bestemt tidsramme.
- Lydspor – dette vil spille av spesifikk lyd i løpet av en bestemt tidsramme.
- Kontrollspor - et spor hvis klipp kontrollerer tidsrelaterte elementer på et GameObject.
- Signal Track – dette gjør det mulig å utføre et bredt utvalg av handlinger på et spesifikt spillobjekt på et spesifikt tidspunkt (f.eks. aktivere spillerbevegelsesskript eller kalle en spesifikk funksjon når tidslinjen når en bestemt ramme, osv.)
- Spillbart spor - et spor hvis klipp er egendefinerte spillbare.
- Cinemachine Track - dette gjør det mulig å blande mellom flere virtuelle cinemachine-kameraer.
For formålet med denne opplæringen vil jeg bare bruke Animasjonsspor og Signalspor.
Sett opp
- Lag et annet virtuelt kamera og navngi det "CutsceneCamera" og sett "Priority"-verdien til ett nivå over "TPS Camera" (eks. 11)
- Høyreklikk i prosjektvisning -> Opprett -> Signal og navngi det "DisablePlayer"
- Dupliser "DisablePlayer" signal og gi det nytt navn til "EnablePlayer"
- Opprett et nytt GameObject i scenen og navngi det "SignalReceiver"
- Fest signalmottakerkomponent til et "SignalReceiver" objekt
- Klikk "Add Reaction" 2 ganger
- Tilordne "DisablePlayer" til en første reaksjon og "EnablePlayer" til en andre reaksjon
"DisablePlayer" vil aktivere videokameraet, deaktivere spillerkameraet og spillerkontrollskriptet, og vil bli plassert ved starten av tidslinjen.
"EnablePlayer" vil deaktivere videokameraet, aktivere spillerkameraet og spillerkontrollskriptet, og vil bli plassert på slutten av tidslinjen.
- Klikk (+) for å legge til et reaksjonsspor og tilordne deretter objektet hvis skript eller komponent måtte aktiveres/deaktiveres.
Tips: For å lage et motsatt signal kan du bare sette opp reaksjonene for "DisablePlayer" og deretter klikke på Gear-ikonet -> Dupliser, endre signalet til "EnablePlayer" og invertere avmerkingsboksene.
- Velg "TimelineManager" objekt og legg til et nytt signalspor i tidslinjevinduet ved å høyreklikke -> Signal Track og tilordne deretter "SignalReceiver" objekt til det.
- Dra og slipp "DisablePlayer" signalelement ved starten av tidslinjen og "EnablePlayer" til bildet du vil at klippscenen skal avslutte:
Dette vil gjøre spillerkontrollerskriptet og kameraet deaktivert i begynnelsen og deretter reaktivert når tidslinjen når slutten.
Til slutt skal vi lage en enkel kameraanimasjon.
- Høyreklikk på Tidslinje -> Animasjonsspor og tilordne deretter "CutsceneCamera" (dette vil be om å legge til Animator-komponent til objektet hvis det ikke er noen)
- Klikk på opptaksknappen
- Flytt "CutsceneCamera" litt, slik at nøkkelbildet er brukt, flytt deretter tidslinjerammehåndtaket til slutten, og til slutt, flytt kameraet til en ny posisjon og klikk på Stopp opptak.
La oss trykke play og se resultatet:
Cutscenen spilles i begynnelsen av spillet.