Link
Waarom deze tutorial?
Tot nu toe heb ik alleen nog maar tutorials gekeken over single player games. Het lijkt me ook leuk om me te verdiepen in hoe je nou een twee speler spel maakt.
Wat heb ik er van geleerd?
Scene Setup
Door de slider onderaan de file manager te slepen kan je instellen hoe groot de icoontjes moeten zijn op het scherm, handig om meer overzicht te krijgen dus.
In de lighting tab kan je onderaan auto uitzetten als de belichting in een scene al gemaakt is zodat het niet nog een keer hoeft te laten. Of het manual te doen.
Een scene wordt standaard geladen om snel iets te bekijken zoals een model. Dit betekend dat niet alles op de goede plek staat wanneer je begint omdat het puur gemaakt is om snel te kijken of je model goed is.
Tank Creation & Control
Een model of prefab zonder transform word op 0,0,0 gezet, tenzijj je dus een transport heb meegegeven aan de prefab.
Door inplaats van een mesh colider te gebruiken op elk object in de scene een box collider of capsule collider te gebruiken bespaar je veel rekenkracht omdat hij niet elke polygon hoeft te controleren.
Een box collider kan je aanpassen met de edit collider button of in cijfers aangeven daaronder.
Door een prefab aan te passen in de hierachy (dus in de scene) en hem daarna op de slaan door op apply te klikken, sla je hem ook op in de prefab in de project folder.
Door bij een particle de simulation space op world te zetten en de emission op distance inplaats van time, kan je particles maken op basis van hoe ver het object gaat (rijdt).
Wanneer je physics gebruikt betekend kinematic of je force op een rigidbody uitvoert of niet. Handig voor bijvoorbeeld een pinball flipper, dan schiet je de bal er mee weg maar wordt de flipper niet benadeeld door gravity etc.
Mathf.abl is de absolute waarde dus als je een float hebt van 0.6 zou het 1 worden, heb je 0.4 dan wordt het 0.
Wat je in de inspector aanpast override wat er in het script staat.
Door een kleine pitch verandering toe te voegen aan het geluid, zou je tegengaan dat wanneer er twee spelers allebij een geluid afspelen het elkaar in de weg gaat zitten. Dit heet phasing.
Wanneer je in de prefab in een scene iets aanpast in de inspector wordt de text voor de nummer (bijvoorbeeld Speed) dikgedrukt, dit betekend dat het alleen in dit object nog aangepast is. Zou je dit opslaan in de prefab door op apply te klikken bovenaan de inspector, dan veranderd dit in alle prefabs.
Camera Control
Wanneer je een object als een child toevoegt aan een object neemt het de rotatie van dat object over. De positie van de child is local van de parent.
Een frustum is de camera view. Je kan zoomen met een ortographic camera door de size aan te passen.
Met [HideInInspector] kan je een public variable niet in de inspector laten zien.
Met GetComponentInChildren kan je een component opvragen in een child van het object. Dit vind de eerste child en de eerste component daarvan dus let er mee op.
Wanneer je een camera hebt die een physiscs object volgt moet deze ook in fixedupdate aangezien het anders buiten sync loopt.
Met Vector3.SmoothDamp kan je van een plek naar de andere gaan met een damping.
Met continue; in een forloop stop je de loop en ga je door met de volgende i.
Je kan in een array in de inspector gewoon een object of transform er op gooien, dan maakt hij automatish de array langer.
Tank Health
Met een worldspace canvan kan je een canvas in de scene maken.
Met sliders kan je verticle en horizontal input geven. Dit staat standaard op horizontal en verticle, dezelfde als in de input manager dus het is slim deze een andere naam te geven.
Met een slider kan je ook een healthbar maken.
Door de canvas op worldspace te zetten en als child van een object te maken kan je een ui element aan een object koppelen zoals een healthbar die mee moet bewegen.
Shell Creation
Door een trigger colider te gebruiken is de collider niet meer solid. Er kan dus niets meer tegen aan komen.
Wanneer je een object kapot maakt gaan alle childs ook kapot. Om iets kapot te maken maar de childs niet maar je de childs eerst los door .parent = null; te zeggen.
Wanneer je een component op een variable in de inspector moet slepen bijvoorbeeld: audio source. Kan je het gameobject met de audio source component er in zijn geheel op slepen. Dan weet unity welk object je bedoelt.
Firing Shells
Om te kunnen schieten met een loop (zoals een tank) kan je beter een gameobject maken en die steeds op het punt waar je een kogel wil laten verschijnen plaatsen. Zo kan je makkelijk zeggen; hier moet een kogel komen wanneer er geschoten wordt.
Wanneer je as rigidbody achter een instantiate zet maak je hem aan als rigidbody.
Game Managers
Door losse gameobjects te maken kan je makkelijk in de scene een punt aangeven waar iets moet komen (zoals spawnpoints).
Door naar 2d te veranderen in de camera view kan je gemakklijk een canvas aanpassen.
Best fit scaled de text naar de grootte dat het mag. Je kan dan een min en max aangeven.
Wanneer je zelf een class maakt die niet van monobehavior inharit, moet je zelf zeggen dat hij sirializible is (dus zichtbaar in inspector).
Door while loops te gebruiken in een courotine, kan je ies laten wachten totdat iets klaar is. Bijvoorbeeld wacht tot iemand bij finish is. Of iets dat controleerd hoeveel spelers er nog level, wanneer de laatste dood is moet er iets gebeuren.
Om een message text te legen type je string.empty (dus een lege string) hetzelfde dus als "".
Audio Mixing
In de project folder kan je een audio mixer maken.
In een audio mixer kan je dan verschillende groepen maken waar geluid in kan, die geluiden worden dan naar de master gestuurd die het laat horen aan de speler.
Bij een audio source kan je dan een output selecteren. Bijvoorbeeld het motergeluid bij een auto zou je kunnen sturen naar de auto groep.
Met een Duck effect kan je een geluid (zoals background music) zachter laten worden tijdens een hard geluid.




