Inhoud
In het eerste jaar van GameDesign doorlopen we gestructureerd alle stappen die nodig zijn voor het maken van je eigen 2D-platformer game in Unity.
Materialen
Scripts
Speler lopen en springen
Camera volgt speler
Dodelijk platform
Vijand
GameController
Assets
Goomba
Muntje
Basis assets uit filmpjes
Leren
Scripting (1): de basis van scriptcomponenten
Voorbereiding
Je gaat leren hoe je moet scripten/programmeren door een muntje (coin) toe te voegen aan je game en te zorgen dat deze 'werkt'.
Voordat je kunt beginnen, zorg je ervoor dat:
- Je een muntje hebt ontworpen en hebt toevoegd aan je scene.
- Je muntje een BoxCollider2D-component bevat.
Daarna kun je door met het filmpje.
Uitlegfilmpje
Test
Oefening: Scripting (1)
Start
Oefenopdrachten
Je gaat wat meer rekenoefeningen doen. In een programmeertaal worden net even andere symbolen gebruikt dan bij wiskunde. Zorg dat je de goede symbolen gebruikt.
Operatie |
Symbool bij wiskunde |
Symbool bij programmeren |
Optellen |
+ |
+ |
Aftrekken |
- |
- |
Vermenigvuldigen |
x of · |
* |
Delen |
: |
/ |
De oefeningen (maak ze allemaal en verwijder ze niet tussentijds):
1 |
Zorg dat het muntje zich via de console bij de start van de game netjes voorstelt en aangeeft hoeveel punten het waard is. |
2 |
Maak een willekeurige berekening met alle operaties (delen, aftrekken, optellen, vermenigvuldigen) en toon het resultaat in de console, bij de start van de game. |
3 |
Je kunt ook stukjes tekst aan elkaar plakken met +. Een stukje tekst staat altijd tussen dubbele aanhalingstekens (" "). Zet op de console bij de start van de game in één regel een zinnig stukje tekst, de uitkomst van een berekening en daarachter weer een stukje tekst.
|
Laat controleren door je docent.
Scripting (2): prefabs en variabelen
Voorbereiding
Je moet deel 1 gedaan hebben. Deze oefening gaat over prefabs en variabelen.
Uitlegfilm
Werk onderstaande uitlegfilm zorgvuldig door.
Test
Oefening: Scripting (2)
Start
Oefenopdrachten
De oefeningen (maak ze allemaal en verwijder ze niet tussentijds):
1 |
Zorg dat elk muntje zich voorstelt met de juiste waarde en daarna de naam die het muntje heeft. |
2 |
Voeg aan het voorstellen toe of het muntje meetelt (true of false). |
3 |
Voeg een nieuwe variabele toe die instelbaar is in de inspector. Noem de variabele gewicht. Er moeten kommagetallen vastgelegd kunnen worden met deze variabele. Bij het voorstellen geeft elk muntje voortaan ook het gewicht aan (in gram).
![](/userfiles/f067f49b80744e0581a2300198343aa4d529d433.png)
|
4 |
Pas de kleur (color) van het muntje aan (kun je instellen bij de Sprite Renderer), zet de scale op 2 en maak er dan een nieuwe prefab van: SuperCoin. Voeg aan je wereld zowel Coins als SuperCoins toe en zorg dat bij het voorstellen goed duidelijk is wat een gewone coin is en wat een supercoin is.
(mag ook andere kleur zijn)
|
Laat controleren door je docent.
Scripting (3): manipuleren van andere componenten
Voorbereiding
Je moet deel 1 en 2 gedaan hebben. Dit deel gaat over het manipuleren van andere components in je GameObject met behulp van scripting.
Uitlegfilm
Test
Oefening: Scripting (3)
Start
Oefenopdrachten
De oefeningen (maak ze allemaal en verwijder ze niet tussentijds):
1 |
Zorg ervoor dat de grootte van de muntjes minder afhankelijk is van de waarde. Dat doe je door uit te gaan van een basisgrootte waar je vervolgens iets bij optelt dat afhankelijk is van de waarde. Het idee zie je in deze afbeelding uitgewerkt. Pas de code aan door één float-variabele toe te voegen en de berekening van grootte aan te passen.
![](/userfiles/98030fe0187caad8487fac9c2ad23b8806f58e24.png)
|
2 |
Zorg ervoor dat de doorzichtigheid (alpha) van het muntje afhankelijk wordt van de waarde. Een muntje mag nooit helemaal doorzichtig worden, want dan zie je het muntje niet meer. De doorzichtigheid van het muntje kun je regelen met de color-eigenschap van de Sprite Renderer. Wat je hiervoor moet doen lijkt veel op wat je al hebt gedaan met het veranderen van de schaal.
|
Laat controleren door je docent.
Scripting (4): if-else statements en invoer
Voorbereiding
Je moet deel 1, 2 en 3 gedaan hebben. Verder heb je nog steeds een basisgame met het muntje erin.
Video
Scripting (4) video iPad-link
Klik op deze link om de video makkelijk op je iPad te bekijken.
Test
Oefening: Scripting (4)
Start
Oefenopdrachten
De oefeningen (maak ze allemaal en verwijder ze niet tussentijds):
1 |
Zorg ervoor dat muntjes die niet meetellen half doorzichtig zijn en dat muntjes die wel meetellen niet doorzichtig zijn. Hoe je objecten doorzichtig maakt, heb je in de vorige opdracht geleerd. Kijk gerust even terug.
|
2 |
Voeg toe dat als de gebruiker een toets indrukt op zijn toetsenbord (welke mag je zelf bedenken), de muntjes die wel meetellen niet meer meetellen en andersom. Uiteraard moet dan ook de doorzichtigheid mee veranderen.
|
3 |
Voeg aan je munt-prefab een halo-component toe (vind je bij de effects). Stel een leuk kleurtje in en maak hem niet te groot (0.3 ofzo). Zorg dat de halo alleen aan staat als het muntje meetelt.
Tip: je regelt de zichtbaarheid van het halo-effect door de size op 0 te zetten of de eigenschap enabled op true of op false te zetten.
|
4 |
Zorg dat muntjes meer waard worden als de gebruiker een bepaalde toets indrukt (welke mag je weer zelf weten). In het spel moet een 'duurder' muntje er anders uitzien dan goedkopere. Hoe je dat doet, mag je zelf weten.
Breng wel een minimum en een maximum aan qua waarde. Onder en boven deze waarde mag het uiterlijk niet meer verder veranderen.
|
Laat controleren door je docent.
Scripting (5): botsingen
Voorbereiding
(deze sectie is nog in constructie)
Video
Scripting (5) video iPad-link
Open deze link om de video makkelijk op je iPad te bekijken.
Test
Oefening: Scripting (5)
Start
Oefenopdrachten
1 |
Zorg ervoor dat elke keer als de speler het muntje raakt, het muntje groter wordt. Je kunt dat bijvoorbeeld doen door de localScale.x en de localScale.y van het muntje steeds te vermenigvuldigen met een kleine factor (zoals 1,1).
|
2 |
Zorg ervoor dat je spel minstens twee soorten muntjes heeft: muntjes die meetellen en muntjes die niet meetellen.
Bouw vervolgens in dat alleen de muntjes die meetellen verdwijnen als de speler er tegen botst. Muntjes die niet meetellen blijven dus staan.
|
3 |
Zorg ervoor dat een muntje dat niet meetelt, gaat meetellen als de speler er tegenaan botst.
|
4 |
Zorg dat er schadelijke muntjes zijn en goede muntjes. Dat moet goed zichtbaar zijn (kleur, halo, etc.). Als de gebruiker tegen een schadelijk muntje botst, verdwijnt zowel het muntje als de speler. Als de speler tegen een goed muntje botst, verdwijnt alleen het muntje en komt in de debugregel te staan hoeveel geld het muntje heeft opgeleverd.
|
5 |
Uitdaging!!
In het Collision2D-object zit ook informatie over de kracht waarmee gebotst is (in relativeVelocity). Deze kracht is beschikbaar in een normalized-variabele die altijd tussen 0 en 1 blijft.
Zorg ervoor dat het muntje bij een harde botsing doorzichtiger wordt dan bij een zachtere botsing.
|
Laat de uitwerkingen controleren door je docent.
Geluid en muziek
Stap 1: zoek muziek en geluiden
- Bepaal wanneer in je game geluidjes en muziekjes gespeeld moeten worden. Bijvoorbeeld als je springt, een vijand raakt, gewond raakt.
- Zoek bij elk van deze gebeurtenissen geluidjes en muziekjes. Je kunt ze ook zelf maken met BFXR (zie hieronder), met je iPad of op andere manieren.
BFXR: tool om geluidseffecten mee te maken
Stap 2: zorg dat de geluidjes en muziekjes MP3 zijn
- Met CloudConvert (zie hieronder) kun je de gemaakte en gevonden geluidjes en muziekjes omzetten naar MP3 indien nodig.
CloudConvert: converteren naar MP3
Stap 3: zet geluidjes en muziekjes in Unity
- Zet de geluidjes en muziekjes in je Asset-folder in Unity.
Stap 4: voeg een audiosource-component toe in Unity
- Bepaal welk object in je game geluid moet maken (meestal de speler of de vijand).
- Voeg bij dit object een Audio Source component toe.
- Zet het geluidje op de plek van AudioClip.
Stap 4: Maak de AudioSource toegankelijk in je script
private AudioSource audio;
void start {
audio = GetComponent<AudioSource>();
}
Stap 5: Speel de audio af op het juiste moment
audio.Play();
Unity-documentatie
In dit hoofdstukje vind je links naar belangrijke stukken in de Unity-documentatie.
Transform
Documentatie over de Transform-class, waarmee je het Transform-component kunt beïnvloeden.
Vector3
Informatie over de Vector3-class, die in Unity veel gebruikt wordt om posities en schaling op te slaan. Een Vector3 bevat een x-, een y- en een z-waarde.
SpriteRenderer
Informatie over de SpriteRenderer-class, waarmee je het Sprite Renderer-component kunt aansturen. Hiermee bepaal je hoe sprites eruit zien. Je kunt bijvoorbeeld de kleur beïnvloeden en aangeven dat een vorm gespiegeld moet worden getoond.
Color
Informatie over de Color-class in Unity. Hiermee kun je kleuren opslaan. Een kleur bestaat uit vier componenten: R(ood), G(roen), B(lauw) en A(lfa). Color(1,1,1,0) is wit en helemaal niet doorzichtig. Color(1,1,1,0.5) is wit en half doorzichtig. Color(0,0,0,0) is zwart.
Collision2D
Informatie over de Collision2D-variabele die je meekrijgt bij elke botsing. In deze Collision2D zit o.a. het GameObject waarmee gebotst wordt.