Link
Waarom deze tutorial?
Deze tutorial is van unity zelf en moet dus heel goed zijn. Ik denk dat ik hier veel van kan leren aangezien het meerdere aspecten aanpakt.
Wat heb ik er van geleerd?
Stealth: Project Overview
Dit was de intro. Hier heb ik niet veel van geleerd.
Game Setup and Lightning
Gebruik een los object om de mesh collider aan te geven inplaats van de echte scene. Hierdoor gaat neit elke poloygon van de echte scene mechcolider worden maar gewoon de simpele versie.
Door je licht in de scene te "bakken" bespaar je veel performance.
In het quality menu kan je aanpassen wat elke graphic setting aangeeft. Je kan de lichten bijvoorbeeld beter maken in bepaalde settings. Je kan ook aangeven wat de standaard is voor elk platform.
Bij schaduwen is Bias de afstand tot waar een schadus start. Softness is hoe zacht de rand is en softness fade is hoe ver weg de shades soft worden inplaats van hard.
Alarm Lights
Met Mathf.Abs krijg je de absolute waarde van wat je er in stopt.
Tag Management
Je kan een script aanmaken genaamt 'Tags' om tags op te slaan als een constant string. Zo kan je hem gemakkelijk op roepen door Tags.(tag naam) te typen.
Screen Fader
Door een plaatje dat je in je beeld wil gaan zetten (zoals een ui of gewoon zwart scherm) helemaal links onderin en klein te maken scheel je veel iritatie doordat je game scherm niet gelijk al vol zit met zwart of met ui elementen.
Game Controller
Door een game object aan te maken met een muziekje en daarna nog een game object aan te maken als child met een spannender muziekje kan je tussen de twee 'faden' wanneer het spannend wordt inplaats van te wisselen van audio.
Mathf.lerp kan je goed gebruiken om smooth tussen twee waardes te wisselen. Dit kan met bijna alles, volumes, transforms etc. Dat is handig om te weten, ik dacht dat dat alleen met transform kon.
CCTV Cameras
Door use light propes te gebruiken kan je sommige objecten wel of juist niet op laten lichten door het licht.
Je kan ook licht toevoegen aan een object als een component zodat hij daar aan te passen is en meewerkt met wat je veranderd in het object. Je kan hem dan ook veranderen in code.
Gebruik een model om een mesh collider te krijgen. Je kan daarna de mesh renderen uitzetten om alleen de collider te houden.
Laser grids
Door time.deltatime te gebruiken kan je heel makkelijk een timer maken. : Timer += Time.deltatime.
Door aan te geven dat een object static is kan je veel performance winnen. Het is dus geen interactief object.
Je kan een object tijdens het spel van material laten veranderen, dit is handig voor bijvoorbeeld switches o.i.d.
Player Setup
Omdat je met een bewegend model werkt dat collision heeft, moet je persee rigidbody gebruiken.
Player Animator Controller
Je kan wisselen tussen animatie gebaseerd op de waarde van een float. Erg handig voor het gebruik van rennen en lopen.
Je kan ook zeggen dat de animatie naar van idle naar lopen moet gaan wanneer de snelheid hoger dan X is. En natuurlijk andersom.
Met Any State kan je vanuit elke state naar een andere animation overlopen. Handig voor bijvoorbeeld doodgaan.
De animator is erg handig en overzichtelijk maar kan wel onoverzichtelijk worden met veel animations. Daar kan je layers voor gebruiken.
Hash IDs
Inplaats van een string op te vragen in de animator kan je beter een Hash ID Gebruiken, deze zijn minder zwaar.
Door een object op te slaan in de folder (er dus een prefab van maken) kan je hem overal veranderen. Wanneer je een prefab veranderd in de hierarchy moet je wel op apply klikken.
Player Movement
Physics objects kan je het best in de fixed update method zetten.
Met LookRotation kan je een object naar een target laten kijken.
Met PlayClipAtPoint kan je tijdelijk een object aanmaken dat geluid maakt en dan verweiderd wordt.
Door de speed in de animator aan te passen kan je heel gemakkelijk de snelheid aanpassen en daarmee de snelheid en de animatie aan passen.
Player Health
Je kan een float maken dat de tijd tussen het dood gaan en de scene opnieuw laden aangeeft. Zodat je niet gelijk opnieuw begint, en de animatie niet ziet van het doodgaan.
Inplaats van het level opniew te laden, kan je ook gewoon alle objecten terug zetten op hun plek.
Camera Movement
Je kan de camera in de scene de view van de editor laten aannemen met 'align with view'.
Omdat de camera een physics object volgt moet de update in fixedupdate
Door te raycasten vanuit de camera kan je kijken of er een object in de weg staat en dan de camera daarop aan te passen.
Picking up the key
Gebruik losse scripts voor losse dingen zoals of je een keycard hebt opgepakt, zo houd je overzicht.
Inplaats van gewoon een animatie op een object te gooien kan je beter een animator gebruiken zodat je de snelheid kan aanpassen en eventueel laten iets er mee kan doen in code.
Sla het op als een prefab om hem gemakklijk nog een keer te gebruiken.
Single Doors
Met de 'Is' keyword kan je kijken of iets - iets is. Bijvoorbeeld: "Other is CapsuleCollider".
met Mathf.max kan je een max stellen. bijvoorbeeld: max is 0 dan kan het niet lager dan 0
Maak je code zo, zodat je het op meerdere verschillende objecten kan gebruiken.
Double Doors
Deze tutorial was bijna hetzelfde als de vorige tutorial en heb hier dus niet veel van geleerd.
The lift
Deze tutorial gebruikte alleen code's die ik al begreep. Ik heb er dus niet veel van geleerd. Er werd uitgelegd hoe jet het einde van het level maakt, dus een zwart scherm en alles laten verdwijnen.
Enemy setup
Een enemy moet kinematic zijn als het een rigidbody is, anders bots hij tegen de muren aan.
Je kan een systeem maken zodat de enemies weten waar ze kunnen lopen, hierdoor krijg je een NavMash.
Enemy Animator Controller
Unity heeft een interne AI waar je sommge variables van kan gebruiken om de snelheid van de animaties aan te passen.
Wanneer je een humanoid animation gebruikt kan je automatisch berekenen welke animatie wanneer moet gebeuren, handig voor dingen zoals AI.
Binnen unity kan je een humanoid animatie nog aanpassen, zoals een shooting animation kan je in unity een andere kant op laten schieten met human IK's.
Door een mask te gebruiken kan je bepaalde delen van een animatie uitzetten.
Enemy Sight
Door navmesh te gebruiken kan je niet alleen een pathfinder maken maar ook controleren hoe ver het van een punt naar een ander punt is om te lopen.
Animator setup
Met damping kun je snelle onverwachte beweginen tegengaan door het iets slomer te laten verlopen. Zoals plotseling om te draaien.
Met setfloat kan je een damping toevoegen.
Enemy Animation
Om van degrees naar radians te veranderen gebruik je mathf.deg2rad.
Enemy Shooting
Je kan goed lazers maken en andere effecten met een line renderer.
Je kan components opvragen van de children van objecten met getcomponentinchildren.
Enemy AI
Het is handig om hiervoor een state machine te maken. Door te controleren welke states de speler in is in de update functie en dan door te sturen naar losse functions houd je het script schoon en duidelijk.
Door een icoon toe te voegen aan gameobjects zie je het in de editor. Klik op een gameobject icon, dan kan je het aangeven. Het heet Gizmo.