RTS Tower Defence Game
Alle instructies om een RTS Tower Defence game te maken.
Project creatie
Open Unity en druk op new project rechts-boven, selecteer de 3D Built in render pipeline en geef je projetc een naam (B.v. : TowerDefense)
Beginnen aan de game!
Scene
Links onderen zie je de Scene SampleScene, verander de naam naar Level1.

Camera Movement
maak een C# en geef die de naam CameraController en plak dit erin.
Sleep de script op de Main Camera
met deze script kan je WASD gebruiken om te bewegen in de game
Packages, AI Navmesh, Gridbox Materials
Druk daarna van boven op Window -> Package Manager, Selecteer Unity Registry packages -> Typ AI Nav -> Selecteer en installeer de Ai navigation Package
Ga naar deze link om de gridbox materials te downloaden voor unity, dit gaan we gebruiken om de objecten textures te geven zodat het niet allemaal wit is. Druk op openen in Unity en dan in Unity op download -> Import -> Import
Save je project en sluit het af start het daarna weer op. Dit is om de project te updaten met de nieuwe import van de AI navmesh package.

Level Prototyping
Spawn nu de 3D object Plane in de level door in je Hierarchy Rechtermuis te klikken -> 3D object -> Plane. Spawn ook een Cube en een Capsule in
Na het in spawnen van de objecten moet je de transform resetten. Dat doe je door het object te selecteren/klikken -> 3 stippen bij transform in de inspector -> Reset
Door op reset te drukken gaan de objecten naar de world origin(0/midden punt)


Materials
in dezelfde foto zie je de locatie van de materialen. Om die op je objecten te gebruiken moet je de gewenste material slepen naar het gewenste object.
Object Scaling
Maak de Plane groter door bij transform -> Scale en zet alle drie de axis(X,Y,Z) op 5
Voor de Cube doen we Scale 2, 1, 2.
Plaats de ingespawnde objecten in de level, ongeveer zoals in foto.
Maak daarna een empty object door weer rechter muis klik en dan 'Create Empty' boven 3d object, Noem de Empty "GameManager"

GameManager
Sellecteer GameManager dan in de inspector add component -> typ NavMeshSurface -> Klik erop

Layer
Druk op de cube -> in de inspector Layer -> Add Layer -> Layer 6 -> Typ Walkable Terrain
Druk nog een keer op de cube en dan in de inspector op layers en selecteer de layer die je net hebt toegevoegd.
Nadat je dit heb gedaan sleep je de cube van je hieracrcy naar je assets


GameManager Layer
Sellecteer de GameManager en Onder Object Collection -> Include layers -> alleen de layer sellecteren die we net hebben gemaakt (Walkable Terrain)
Walkable Terrain Layout
Maak nu een simpele layout door de cube te sellecteren CTRL + D om dezelfde object op de locatie te plakken en dan CTRL ingedrukt tijdens het slepen met het pijltje om zo een simpele layout te maken.
Nadat je de layout heb gemaakt druk je op GameManager en Dan op Bake.

Capsule(Enemy)
Plaats de Capsule(Enemy) Op het blauwe vlakje wat is onstaan na het baken. Maak de Capsule ook wat kleiner door in de transform -> Scale 0.5, 0.5, 0.5
Ga naar de inspecotr en voeg de NavMeshAgent toen aan de Capsule. Dit heb je nodig zodat de capsule kan navigeren op het terrain

Waypoint
Druk op de 1ste plek waar er een bocht is en dan maak je een Empty, Geef die de naam Waypoint

Scripts
Maak in de assets tab een nieuwe folder met de naam Scripts
Maak in de Scripts folder een nieuwe C# Script en geef het de naam "EnemyController"
Sleep de script op je Capsule in de hierarchy


EnemyController Script
Open de EnemyController script en plak dit erin
Druk op CTRL + S en ga terug naar unity
Druk op de Capsule scroll naar je script -> Druk het plusje en sleep de Waypoint of Waypoints object(en) van je hierarchy naar de waypoint in je script. Doe dit op de volgorde can je waypoints.

Enemy Wave Spawner
Hier gaan we het Enemy Wave systeem maken om enemy's te spawnen in waves.
Nieuwe Cube en Spawner
Spawn een nieuwe Cube en zet die aan het begin van je Path(Waar de enemys gaan lopen).
Maak de Cube ook groter door een scale van 3, 3, 3 te geven.
Maak daarna een Empty en geef die de naam Spawner. Zet de Spawner op het begin van het pad op de NavMesh Surface( Blauwe strook op je path).

Spawner Script
Maak een nieuwe C# Script in de Script folder en geef die de naam "Spawner".
Sleep de Script daarna op de Spawner GameObject.
Als je in de Inspector kijkt van de Spawner GameObject zou de script er moeten staan

Open de Spawner script en plak dit erin
Open Dan de EnemyController script en verander het naar de nieuwe script hieronder.
Capsule/Enemy Prefab
Sleep de Capsule vanuit de Hieracrhy naar de assets tab om de capsule een prefab te maken dat hebben we nodig voor de spawner.
verwijder daarna de capsule uit de hierarchy.

Klik op de spawner en druk op het slotje dat bij de inspector staat.
Sleep daarna de Capsule Prefab van de Assets window naar 'Enemy Prefab'.
Sellecteer daarna je waypoints door CTRL ingedrukt te houden en je waypoints te klikken en sleep ze dan naar het woord 'Way Points' in de inspector.
druk nadat weer op het slotje bij de inspector om het paneel weer te unlocken.

Play test
Als je alle stappen tot nu toe goed hebt uitgevoerd en je drukt op play in de editor zou: Enemy's spawnen -> gaan naar de waypoint -> Bij de laatste Waypoint gaan de enemys kapot.

Level Manager
Open de Spawner script en verander het naar dit
Spawn een Empty object in en geef die de naam "LevelManager"
maak een nieuwe script en geef die ook de naam "LevelManager"
sleep de script naar de empty gameobject.

Open de LevelManager Script en plak dit erin
EnemyController
Open de EnemyController Script en verander dat naar dit
Spawner naar LevelManager
Sleep de GameObject Spawner naar het tabje Spawner in de LevelManager Script op de LevelManager GameObject

LevelManager Script:
Max Wave: Hoevel golven van vijander er zijn.
Wave Spawn Interval: Hoelang het duurt voordat de volgende golf start.
Main menu
ga naar je scenes mapje en maak een nieuwe scene, Geef deze de naam MainMenu

open de MainMenu Scene, maak een nieuwe canvas
na het maken van het canvas maak je een button in de canvas druk daarna op import tmp essentials
Zorg dat de UI elementen(Zoals de button) In de Canvas zitten.



Buttons
Verander de text van de button naar 'PlayButton' en verander de text in de button naar 'play'
Copieer de knop en plak hem nog 2 keer.
Verander de naam van de buttons naar: Levels, Quit. Doe dit ook voor de bijbehorende text.


MainMenuManager
maak een empty en geef die de naam 'MainMenuManager'
maak een C# script met dezelfde naam
sleep het script naar de MainMenuManger empty

Open de MainMenuManager C# script en plak dit erin
Druk op de PlayButton, Scroll in de inspector naar de button tab, Druk op het "+" en sleep daarna de MainMenuManager Empty naar het vakje.
Doe dit voor elke Button.

Druk daarna op het knopje waar staat "No Functions "-> MainMenuManager -> OnPlayButtonClicked( )
kies de bijbehorende functies.
Playbutton = OnPlayButtonClicked( )
LevelsButton = OnLevelsButtonClicked( )
QuitButton = OnQuitButtonClicked( )

Levels Scene
Maak in de Scenes folder een nieuwe scene en geef deze de naam Levels.
Hier gaan we een level kunnen sellecteren om te kunnen spelen.
Hier komen we later op terug.
Turrets
Tags
Druk op de Cube -> in de inspector op Tags -> Add Tag. -> druk op het '+' om een tag te maken. Noem de tag "Platform". Maak er nog een en noem die "Occupied"


Tower/Cannon Assets.
Download de Toren en cannon van Deze Link Dit zijn zelf gemaakte 3d modellen(Zien er slecht uit, Maar het werkt).
Pak de Zip file uit en sleep het mapje "SDAssets" naar het Assets tabje in Unity.
ga in het sdAssets mapje en sleep 1 of meerdere torens op de plaatsen waar je wilt dat de torens staan.
Selecteer al je torens die in je scene staan en geef ze de "Platform" Tag.

Maak een nieuwe C# Script en geef die de naam "UIInterface"
Sleep de script op de LevelManager.
Plak daarna dit in de script.
Met deze script ga je het cannon kunnen plaatsen op de torens door Linker muisklik ingedrukt te houden en los te laten wanneer je op een toren gericht staat.
Last updated