You are on page 1of 29

Camera Controller

met Coroutines
Wat ga je maken?
Inhoud
• Detecteren dat Link uit beeld loopt.
• Camera bewegen met Coroutines.
• De opdracht.
DETECTEREN DAT LINK UIT BEELD LOOPT
Camera.WorldToViewportPoint

https://docs.unity3d.com/ScriptReference/Camera.WorldToViewportPoint.html
Worldpoint vs Viewportpoint

Worldpoint: Viewportpoint:

X: 0,4
Y: 0,55
Opdracht Deel 1
1. Maak een script genaamd CameraController aan op de RenderCam. (Waar de rendertexture in zit)

2. Maak een klassevariabele aan van het type Camera en geef het een goede naam.
3. In de Start():
Sla het Camera component op in de bijpassende klassevariabele met behulp van GetComponent<T>();

4. Maak een klassevariabele aan van het type Transform en zorg dat je in de inspector daar de transform van de Player
in sleept.

5. In de Update():
Sla ieder frame in een lokale Vector3 variabele de viewportPosition op van de Player transform.
Gebruik daarvoor je klassevariabelen en de .WorldToViewportPoint() functie.

6. Test:
Gebruik een Debug.Log() met je tijdelijke Vector3 en druk op play. Als je link nu beweegt veranderen als het goed is
de .x en de .y in de console mee. (Links uit beeld is -0, rechts 1+ etc.)
BEWEGEN VAN DE CAMERA
MET EEN COROUTINE
Als Link uit beeld loopt:
• Zet PlayerMovement uit
• Wacht 0.2 seconde
• Beweeg de camera en de player naar het nieuwe scherm over 1 seconde.
• Wacht 0.2 seconde
• Zet PlayerMovement weer aan
Opdracht deel 2
Maak zelf een coroutine in je CameraController script die de volgende stappen
doorloopt:
• Zet PlayerMovement uit
• Wacht 0.2 seconde
• Beweeg de camera en de player naar het nieuwe scherm over 1 seconde.
• Wacht 0.2 seconde
• Zet PlayerMovement weer aan
Wat is een coroutine?

https://docs.unity3d.com/Manual/Coroutines.html
Ander voorbeeld

• Draai richting target.


• Beweeg naar target.
• Wacht 1 seconde.
• Schiet kogel af.

https://gamedevbeginner.com/coroutines-in-unity-when-and-how-to-use-them/
Coroutine aanmaken

Coroutine starten
Parameters werken ook
Coroutine opslaan
Mogelijkheden
While loop
While loop met Lerp
Als Link uit beeld loopt:
• Zet PlayerMovement uit
• Wacht 0.2 seconde
• Beweeg de camera en de player naar het nieuwe scherm over 1 seconde.
• Wacht 0.2 seconde
• Zet PlayerMovement weer aan
CameraController PlayerMovement

SetPause(bool)
Als Link uit beeld loopt:
• Zet PlayerMovement uit
• Wacht 0.2 seconde
• Beweeg de camera en de player naar het nieuwe scherm over 1 seconde.
• Wacht 0.2 seconde
• Zet PlayerMovement weer aan
Als Link uit beeld loopt:
• Zet PlayerMovement uit
• Wacht 0.2 seconde
• Beweeg de camera en de player naar het nieuwe scherm over 1 seconde.
• Wacht 0.2 seconde
• Zet PlayerMovement weer aan
While loop met Lerp
Eindpositie berekenen met richting
Stel je coroutine heeft de volgende parameters: Vector3 direction, float camAmount, float playerAmount

direction:

Vector3.left = (x:-1, y:0, z:0)


Vector3.right = (x:1, y:0, z:0)
Vector3.up = (x:0, y:1, z:0)
Vector3.down = (x:0, y:-1, z:0)

Door de direction te vermenigvuldigen met de camAmount en die op te tellen bij de startpositie kom je op de
eindposities uit.

Voorbeeld bij startpositie van (x:5, y:0, z:0) (x:-1, y:0, z:0) * 16 = (x:-16, y:0, z:0)
direction: Vector3.left (x:-1) camAmount: 16

endCamPos = startCamPos + direction * camAmount; (x:5, y:0, z:0) + (x:-16, y:0, z:0) = (x:-11, y:0, z:0)
Opdracht deel 2
Maak nu zelf een coroutine in je CameraController script die de volgende stappen
doorloopt:
• Zet PlayerMovement uit
• Wacht 0.2 seconde
• Beweeg de camera en de player naar het nieuwe scherm over 1 seconde.
• Wacht 0.2 seconde
• Zet PlayerMovement weer aan

Start de coroutine in de Update zodra Link uit beeld loopt. Begin met 1 richting,
maak daarna de rest werkend.

Let op:
Zorg dat je maar 1 coroutine hoeft te maken voor alle vier de richtingen met behulp van parameters.
Zorg ervoor dat de coroutine maar 1 keer tegelijkertijd gestart wordt met behulp van een null check.
Bestudeer de vorige slides voor hints.
Opdracht

Je bent klaar met dit deel als…

• De camera naar het volgende scherm beweegt zodra Link uit beeld loopt.
• Je de PlayerMovement uit kan zetten tijdens de camera animatie.
• Je dit hebt gedaan met een coroutine.

You might also like