Ingewikkeldheid: Unity C#
Benodigde Modules: Nieuwe Levels
In deze module ga je een deur toevoegen die ervoor zorgt dat de Player naar het volgende level kan gaan.
Om te beginnen heb je een plaatje nodig van een open deur. Deze kan je zelf maken/zoeken of je kan dit voorbeeld gebruiken:
Zet dit plaatje in de Assets. Als je er daar op klikt kan je rechts in de Inspector ook de Pixels Per Unit weer aanpassen. Als je het voorbeeld plaatje gebruikt hebt zet dit dan op 64 en anders zet je hem op het aantal pixels dat het plaatje breed is. Zo zorg je ervoor dat de deur even groot is als de andere blokjes in je level. Sleep hem dan vanuit de Assets naar de plek in je level waar je hem wil hebben.
Omdat dit nu alleen nog een plaatje is moet je eerst weer componenten toevoegen. De Player moet tegen de deur aan kunnen botsen, dus moet er op de deur een Collider2D component toegevoegd worden. Bij de deur is de BoxCollider2D meestal de goede vorm.
Daarnaast moet je ook weer een nieuw C# script maken om ervoor te zorgen dat er dingen gebeuren wanneer je tegen de deur aanbotst. Doe dit nu door rechtermuisknop in de assets te klikken en naar Create -> C# Script te gaan. Noem het script dat je nu maakt ‘Deur’ en voeg dit ook toe als component door het op de deur in het level te slepen. Open het daarna door er op te dubbelklikken.
In dit script ga je de Start() en Update() methodes niet nodig hebben, dus die kan je verwijderen. Zorg dat je niet ook de { } haakjes die bij de class horen verwijdert! In de basislessen heb je een variabele gemaakt van het type string. Dit heb je toen gebruikt voor het stukje tekst dat de Player aan het begin van het level in de Console neerzet.
Je gaat dit nu gebruiken om de naam van het volgende level bij de deur in te kunnen stellen. Zet dus bovenin de class de regel ‘public string LevelNaam;‘. Hiermee maak je dus een tekst variabele aan het de naam LevelNaam.
Om deze variabele te gebruiken heb je de methode nodig die uitgevoerd wordt wanneer de Player tegen het object aanbotst. Dit is de OnCollisionEnter2D() methode. Maak deze dus aan in de Deur class door ‘oce2’ te typen. Visual Studio maakt hem dan vanzelf af.
In deze methode moet je eerst weer checken of het inderdaad de Player is die tegen de deur aanbotst. Dit doe je net als je in de basislessen bij het gevaarscript hebt gedaan met ‘if(collision.gameObject.GetComponent<Player>())‘.
Op de volgende regel zet je dan de instructie die ervoor zorgt dat het volgende level geladen wordt. Hiervoor heb je weer de SceneManager nodig, dus bovenin het script zet je weer ‘using UnityEngine.SceneManagement;‘. In de OnCollisionEnter2D() methode zet je nu de regel ‘SceneManager.LoadScene(LevelNaam);‘. Hiermee wordt dus het level met de naam die bij de LevelNaam variabele is ingesteld geladen. Je script ziet er als het goed is nu zo uit:
Sla nu het script op met Ctrl-S en ga terug naar Unity.
Stel bij het script component van de Deur bij LevelNaam de naam van je tweede level in. Let op dat het precies hetzelfde moet zijn. Als je een hoofdletter of spatie teveel doet of vergeet werkt het niet! Nu zal de deur werken en ga je naar het volgende level wanneer de Player de deur aanraakt.