RTS Tower Defence Game

Alle instructies om een RTS Tower Defence game te maken.

Ontwerp document van de game

Gebruik de screenshots voor meer duidelijkheid

Ik heb comments bij de code gezet zodat je begrijpt wat het doet

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.

Naam veranderen 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.

AI NavMesh Installeren

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)

Objecten in spawnen
Transform Resetten

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"

Layout en GameManager

GameManager

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

NavMeshSurface

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

Layers
Prefab Maken

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.

NavMesh Setup

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

NavMeshAgent

Waypoint

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

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

Scripts folder
Script op de enemy zetten

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.

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 setup

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

Spawner Script Op Spawner GameObject

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.

Capsule/Enemy Prefab maken

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.

Spawner setup

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.

project in werking

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.

LevelManager

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

LevelManager Script:

Max Wave: Hoevel golven van vijander er zijn.

Wave Spawn Interval: Hoelang het duurt voordat de volgende golf start.

ga naar je scenes mapje en maak een nieuwe scene, Geef deze de naam MainMenu

Main Menu

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

Canvas
Button in canvas
TMP Essentials

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.

Button
ButtonText

maak een empty en geef die de naam 'MainMenuManager'

maak een C# script met dezelfde naam

sleep het script naar de MainMenuManger empty

Script naar MainMenuManager 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.

MainMenuManager op Buttons

Druk daarna op het knopje waar staat "No Functions "-> MainMenuManager -> OnPlayButtonClicked( )

kies de bijbehorende functies.

Playbutton = OnPlayButtonClicked( )

LevelsButton = OnLevelsButtonClicked( )

QuitButton = OnQuitButtonClicked( )

Button Functions

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"

Tags
Tags

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.

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