Les 05

Les 05
Singletons
First Person Character Controller
1 / 31
next
Slide 1: Slide
Programming - FundamentalsMBOStudiejaar 2

This lesson contains 31 slides, with text slides.

time-iconLesson duration is: 120 min

Items in this lesson

Les 05
Singletons
First Person Character Controller

Slide 1 - Slide

Vorige les
Scriptable Objects
Laatste Text Adventure

Slide 2 - Slide

Project opzetten
Download eerst dit project als een zip of pull de repository.
(Link staat ook op onderwijs online)

Slide 3 - Slide

Project opzetten
Download nu ook de nieuwste 2021 unity versie om het project mee te openen. Het kan zijn dat unity aangeeft dat het project een andere versie heeft, klik dan op change editor version.
                                                                  (Een andere 2021.3 versie zou
                                                  ook moeten werken)

Slide 4 - Slide

Project opzetten
Unzip het gedownloade bestand in een logische map, ik heb zelf een map met al mijn Unity Projects genaamd UnityProjects.
Voeg hem daarna via github desktop toe als een project.

Slide 5 - Slide

Singleton
Wat is het?
- Een class waar er maar een van kan zijn.
- Is altijd aanspreekbaar.
Wat kan ik er mee?
- Makkelijk om belangrijke informatie op te vragen, over bijvoorbeeld de speler.
- Makkelijk belangrijke functie's aan te roepen.


Slide 6 - Slide

Singleton
Nadelen van singletons:
Bij grotere projecten kan het snel onoverzichtelijk worden.
Moeilijk sommige elementen te fine tunen.
(Bijvoorbeeld bepaalde audio zachter of harder laten klinken)


Slide 7 - Slide

Singleton
Hoe maak ik het?
Werkt in veel verschillende talen, wel vaak net iets anders.
Unity:                                     PHP:                             JavaScript:

Slide 8 - Slide

Singleton - Stapje voor stapje
We beginnen met een static variable maken van onze class. Zorg dat deze ook op public staat!!
Ook willen we nog iets extra toevoegen zodat we dit variable wel in kunnen lezen maar niet aan kunnen passen.

Slide 9 - Slide

Singleton - Stapje voor stapje
Het kan soms zijn dat er meerdere instances van onze singleton bestaan, dit willen we voorkomen voordat er per ongeluk een andere instance wordt aangesproken.
Dit doen we door te controlleren of er een
andere instance instance is, en als die
niet gelijk staat aan deze instance,
verweideren we hem.

Slide 10 - Slide

Singleton - Stapje voor stapje
Nu we de core functionaliteit hebben van de Singleton kunnen we er handige functies en variabelen in stoppen.

Slide 11 - Slide

First Person Character Controller
Er zijn veel manieren om een playable character te maken, wij gaan nu aan de slag met een simpele First Person Character Controller.
Begin met in de Scene een 3D capsule te maken, dit wordt onze player.

Slide 12 - Slide

First Person Character Controller
Hernoem deze capsule naar Player en sleep de Camera op het Player Object. Reset dan wel het transform component op de camera, hierdoor staat ie midden in onze player.
Hierna kan je de camera iets omhoog slepen zodat ie op de plek van het "hoofd" zit.

Slide 13 - Slide

FPCC - Movement
Movement in Unity is heel makkelijk te doen met Axis.
Hier gebruiken we de Horizontal en Vertical axis voor.

Deze geven we een waarde in de Update.
En als laatste passen we dit toe in de FixedUpdate

Slide 14 - Slide

FPCC - Movement
We gebruiken nu Axis maar wat zijn die eigenlijk?
Unity Axis werken als eerste op naam, hiermee kan je aanspreken. Daarna kijken ze of een waarde tussen 1 en -1 valt en gebasseerd daarop weten we bijvoorbeeld op welke toets er is gedrukt.
Horizontal werkt met a en d of left en right. (a = -1, d = 1)
Vertical werkt met w en s of up en down (s = -1, w = 1)

Slide 15 - Slide

FPCC - Movement
Ja kan alle beschikbare Axis zien via Edit -> Project Settings -> Input Manager

Slide 16 - Slide

FPCC - Jumping
We beginnen met een paar variables aanmaken. We beginnen met een rigidbody, dit is belangrijk voor collision en gravity.
Daarna willen we ook een bool bijhouden voor of we op de grond staan.
Als laatste willen we een transform van een object dat onder onze speler bestaat, de afstand voor wanner we grounded zijn en layermask waarmee we aan kunnen geven wat grond is.

Slide 17 - Slide

FPCC - Jumping
Als laatste hebben we ook nog een jumpforce variable nodig, dit bepaalt met hoeveel kracht we omhoog gaan met een jump.

Slide 18 - Slide

FPCC - Jumping
Nu gaan we terug naar de Scene en we maken een nieuw child object op onze player. Dit wordt het ground check object.
Zorg dat deze onderaan de speler komt.

Slide 19 - Slide

FPCC - Jumping
Terug in het PlayerScript zetten we de waardes van 2 variabelen in de start functie. We halen alle info uit het Rigidbody component met GetComponent<> en zetten we onze ground distance.

Slide 20 - Slide

FPCC - Jumping
In de Update functie gaan we nu controlleren of onze GroundCheck Object binnen 0.4 units van de grond is, en als dat zo is zetten we isGrounded op true.
Daarna checken we of isGrounded true is en of er op spatie wordt gedrukt, zo ja dan springen we.

Slide 21 - Slide

FPCC - Jumping
Nu moeten we nog een paar laatste dingen in de Scene opzetten voordat het allemaal goed werkt.
Wanneer we dat hebben gedaan kunnen we rond lopen en springen maar nog niet rondkijken.

Slide 22 - Slide

FPCC - Jumping
Maak ook een nieuwe Layer aan voor de grond, en geef het grasveld en de weg deze layer.

Slide 23 - Slide

FPCC - Rotate Camera
We gaan nu beginnen aan een Camera Script om rond te kunnen kijken in onze game. In dit script hebben we 3 variabelen nodig.
In de start zetten we ook xRotation op 0.


Slide 24 - Slide

FPCC - Rotate Camera
Ook in dit script gaan we weer gebruik maken van Axis, deze keer Mouse X en Mouse Y. Hierna gaan we onze speler met de Mouse X naar links en rechts roteren.

Slide 25 - Slide

FPCC - Rotate Camera
Om omhoog en omlaag te kunnen gebruiken gaan we de Mouse Y gebruiken om de X rotatie van de camera aan te passen.
Ook clampen we onze rotatie tussen -90 en 90, hierdoor kunnen we niet helemaal doorgaan met naar onder of boven kijken.

Slide 26 - Slide

FPCC - Rotate Camera
Als laatste kunnen we nog een regeltje toevoegen in de Start functie, dit zorgt ervoor dat onze cursor in game onzichtbaar wordt en in het midden van het scherm blijft.
Wel tijdens het testen eerst even in het scherm klikken!

Slide 27 - Slide

FPCC - Rotate Camera
Om het nu nog weer allemaal goed te laten werken moeten we nog wat dingen in de inspector aanpassen. Sleep eerst dit script op de camera.

Slide 28 - Slide

Opdracht
Maak in dit project 2 singletons aan, een Audio en een Game Manager. Deze moeten minstens de volgende onderdelen bevatten.
Audio Manager: PlaySound en PlayAmbience
Game Manager: GameOver en PlayerHealth

Slide 29 - Slide

Opdracht
Door middel van deze singletons moet er een regen achtergond geluid komen, de auto's moeten toeteren als deze tegen de speler aan komen. Als dit gebeurt moet de speler ook health verliezen. Als de speler geen health meer heeft moet er ook een game over komen, dit gebeurt ook wanneer de speler van de map afloopt.
Link om in te leveren staat op onderwijs online!

Slide 30 - Slide

Slide 31 - Slide