In deze zelfstudie laat ik je zien hoe je kunt profiteren van de nieuwe 2D-hulpmiddelen die zijn opgenomen in Unity om een 2D-game te maken.
In deze zelfstudie leert u hoe u een Unity 2D-project maakt en een mobiel spel maakt met C # en Unity.
Het doel van het spel is om een teleporterende straal op de koeien te schieten voordat ze de veiligheid van de schuur kunnen bereiken.
In dit project leer je de volgende aspecten van Unity-ontwikkeling:
Open Unity en selecteer Nieuw project van de het dossier menu om het nieuwe projectdialoogvenster te openen. Selecteer een map voor uw project en stel inStandaardinstellingen instellen voor naar 2D.
In de volgende stap krijg je de interface van Unity te zien. Stel het project in voor mobiele ontwikkeling door te kiezen Bouw instellingen van de het dossier menu en het selecteren van uw platform naar keuze.
Unity kan bouwen voor iOS, Android, BlackBerry en Windows Phone 8, wat geweldig is als u van plan bent om een mobiel spel voor meerdere platforms te maken.
Omdat we een 2D-game gaan maken, is het eerste dat we moeten doen nadat we het platform hebben geselecteerd dat we targeten, het kiezen van de grootte van de illustraties die we in het spel gebruiken.
iOS:
Omdat Android een open platform is, zijn er veel verschillende apparaten, schermresoluties en pixeldichtheid. Een paar van de meest voorkomende staan hieronder vermeld.
En voor Widows Phone en BlackBerry:
Hoewel we ons in deze zelfstudie concentreren op het iOS-platform, kan de code worden gebruikt om een van de andere platforms te targeten.
Afhankelijk van het apparaat dat u target, moet u de illustratie mogelijk converteren naar de aanbevolen grootte en pixeldichtheid. U kunt dit doen in uw favoriete foto-editor. Ik heb de Grootte aanpassen ... functie onder de Hulpmiddelen menu in OS X's Voorbeeld toepassing.
Zorg ervoor dat u op de 2D-knop klikt in de Tafereel paneel. U kunt ook de resolutie wijzigen die wordt gebruikt om de scène in de Spel paneel.
De gebruikersinterface van onze game is eenvoudig. U kunt de illustraties voor deze zelfstudie vinden in de bronbestanden van deze zelfstudie.
U kunt een van de drie talen gebruiken in Unity, C #, UnityScript, een taal vergelijkbaar met JavaScript in termen van syntaxis, en boe. Elke taal heeft zijn voors en tegens, maar het is aan jou om te beslissen welke je voorkeur heeft. Mijn voorkeur gaat uit naar de C # -syntaxis, dus dat is de taal die ik in deze zelfstudie zal gebruiken.
Als u besluit een andere taal te gebruiken, moet u de voorbeelden van Unity's Script Reference raadplegen.
Unity heeft een naam opgebouwd als een geweldig platform voor het maken van 3D-spellen voor verschillende platforms, zoals Microsoft Xbox 360, Sony PS3, Nintendo Wii, het web en verschillende mobiele platforms.
Hoewel het altijd mogelijk was om Unity voor 2D-game-ontwikkeling te gebruiken, duurde het tot de release van Unity 4.3 dat het native 2D-ondersteuning bevatte. In de volgende stappen leren we werken met afbeeldingen als sprites in plaats van texturen.
Ik zal een aantal geluiden gebruiken om de game-ervaring te verbeteren. De geluidseffecten die in deze zelfstudie worden gebruikt, zijn te vinden op Freesound.org.
Voordat we beginnen met coderen, moeten we onze activa toevoegen aan het Unity-project. Er zijn verschillende manieren om dit te doen:
Nadat u deze stap hebt voltooid, ziet u de items in uw project Middelen map in de project paneel.
We zijn klaar om de scène van ons spel te maken door objecten naar de te slepen Hiërarchie of Tafereel paneel.
Begin met het slepen en neerzetten van de achtergrond naar de Hiërarchie paneel. Het moet dan verschijnen in de Tafereel paneel.
Omdat het Tafereel paneel is ingesteld om een 2D-weergave weer te geven, u zult merken dat u de Hoofdcamera in de Hiërarchie toont een voorbeeld van wat de camera gaat weergeven. Je kunt dit ook zien in de gameweergave. Om de hele scène zichtbaar te maken, wijzigt u de Grootte waarde van de Hoofdcamera naar 1.6 in de Inspecteur paneel.
Het schip is ook een statisch element waar de speler niet mee kan communiceren. Plaats deze in het midden van de scène.
Selecteer de schuur van de Middelen paneel en sleep het naar de scène. Plaats het zoals in de onderstaande schermafbeelding.
Om ervoor te zorgen dat de stal op de hoogte wordt gebracht wanneer een koe hem raakt - komt de stal binnen - moeten we een onderdeel toevoegen, een Box Collider 2D precies zijn.
Selecteer de schuur in de scène, open de Inspecteur paneel en klik Component toevoegen. Selecteer uit de lijst met componenten Box Collider 2D van de Natuurkunde 2D sectie. Zorg ervoor dat u de Is Trigger doos.
We willen dat de koe reageert wanneer het de deur van de schuur raakt, dus we moeten de rijder wat kleiner maken. Open de Inspecteur en verander de Grootte en Centrum waarden van de collider om de box dichter bij de deur van de schuur te brengen.
Het is tijd om wat code te schrijven. We moeten een script toevoegen zodat de toepassing op de botsing kan reageren wanneer een koe de schuur binnenkomt.
Selecteer de schuur en klik op de Component toevoegen knop in de Inspecteur paneel. kiezen Nieuw script en noem het OnCollision. Vergeet niet om de taal te wijzigen in C #.
Open het nieuw gemaakte bestand en voeg het volgende codefragment toe.
gebruikmakend van UnityEngine; met behulp van System.Collections; public class OnCollision: MonoBehaviour void OnTriggerEnter2D (Collider2D anders) if (other.gameObject.name == "cow (Clone)") / * Speel het bewaarkoe-geluid * / audio.Play (); / * Vernietig de koe * / Destroy (other.gameObject);
Het fragment controleert op een botsing tussen het object waaraan het script is gekoppeld, de schuur en een object met de naam koe (Clone)
, wat een voorbeeld van de koe zal zijn prefab die we later zullen maken. Wanneer een botsing plaatsvindt, wordt een geluid afgespeeld en wordt het koe-object vernietigd.
Om een geluid te spelen wanneer een koe de schuur raakt, moeten we eerst het geluid aan de schuur bevestigen. Selecteer het van de Hiërarchie of Tafereel weergave, klik op de Component toevoegen knop in de Inspecteur paneel en selecteer Geluidsbron van de audio sectie.
Haal het vinkje weg Speel op Awake en klik op de kleine stip rechts, onder het tandwielpictogram, om het geluid van de stal te selecteren.
U kunt de grootte van de pictogrammen in de gebruikersinterface van Unity (gadgets) vergroten door op te klikken Gizmos in de Tafereel paneel en het aanpassen van de positie van de schuifregelaar.
Sleep de ray-afbeelding van de Middelen paneel naar de scène en voeg er een collider aan toe. Dit is nodig om een botsing met de ongelukkige koe op te sporen. Controleer deIs Trigger optie in de Inspecteur paneel.
Maak een nieuw script door de stappen te herhalen die ik kort geleden heb geschetst. Geef het script een naam Kogelen vervang de inhoud door het volgende codefragment:
gebruikmakend van UnityEngine; met behulp van System.Collections; public class Bullet: MonoBehaviour openbare AudioClip cowSound; // Gebruik dit voor initialisatie ongeldig Start () renderer.enabled = false; / * Maakt het object onzichtbaar * / // Update wordt eenmaal per frame ongeldig Update () / * Ontvang hoofdinvoer * / if (Input.GetButton ("Fire1")) renderer.enabled = true; / * Maakt het object zichtbaar * / / * Speel het ray-geluid * / audio.Play (); if (renderer.enabled == true) transform.position + = Vector3.down * (Time.deltaTime * 2); / * Controleer of er geen grenzen zijn * / if (this.transform.position.y < -1.5) transform.position = new Vector2(0.08658695f, 0.1924166f); /* Return bullet to original position */ renderer.enabled = false; void OnTriggerEnter2D(Collider2D other) if (other.gameObject.name == "cow(Clone)") AudioSource.PlayClipAtPoint(cowSound, transform.position); /* Destroy the cow */ Destroy(other.gameObject); transform.position = new Vector2(0.08658695f, 0.1924166f); /* Return bullet to original position */ renderer.enabled = false;
Dat is veel code, maar het is niet ingewikkeld. Laten we kijken wat er aan de hand is. Eerst maken we een AudioClip
exemplaar genoemd cowSound
, die we zullen gebruiken om een audiobestand op te slaan. Dit is gewoon een andere techniek om een geluid te spelen als u geen twee audiocomponenten aan het object wilt toevoegen. We verklaren de variabele als openbaar zodat we er toegang toe hebben vanaf de Inspecteur. Klik op de kleine stip aan de rechterkant van cowSound en selecteer het audiobestand.
We maken de straal vervolgens onzichtbaar door de renderer uit te schakelen. We gebruiken hetzelfde object, zodat we bronnen kunnen besparen, wat een belangrijke optimalisatie is voor minder krachtige apparaten.
We detecteren aanrakingen op het scherm, die de straal zichtbaar maken en het ray-geluid afspelen (zie hieronder). Als het object zichtbaar is, betekent dit dat het omlaag moet gaan om een koe te raken.
Er is ook code om te detecteren of de straal buiten de grenzen van de scène valt. Als dit het geval is, verplaatsen we het, klaar om opnieuw te vuren (controleer de stralen X en Y waarden in de Inspecteur).
Het laatste deel controleert of de straal een koe raakt. Als dat zo is, speelt het het koeiengeluid en vernietigt het de koe. De straal wordt dan onzichtbaar gemaakt en opnieuw gepositioneerd op de oorspronkelijke positie, klaar om opnieuw te vuren.
Om de audio voor de straal toe te voegen, selecteert u deze in de Hiërarchie of Tafereel bekijk en klik Component toevoegen in de Inspecteur paneel. kiezen Geluidsbron van de audio sectie. Haal het vinkje weg Speel op Awake en klik op de kleine stip aan de rechterkant om het geluidsbestand te selecteren.
Sleep de afbeelding voor de koe van de Middelen paneel en plaats het in de scène zoals hieronder getoond.
Om een botsing te detecteren, moet ten minste een van de botsende objecten een hebben RigidBody2D component geassocieerd. Omdat de koe kan botsen met zowel de schuur als de straal, is het het beste om het onderdeel aan de koe toe te voegen.
We moeten ook een spuitmachine aan de koe toevoegen, zodat we botsingen met de schuur en de straal kunnen detecteren. Zorg ervoor dat u de Is Trigger checkbox in de Inspecteur.
Voeg een scriptcomponent toe aan de koe en vervang de inhoud door het volgende:
gebruikmakend van UnityEngine; met behulp van System.Collections; openbare klasse MoveCow: MonoBehaviour public Vector3 moveSpeed; public float spawnTime = 2f; public float spawnDelay = 2f; // Gebruik dit voor initialisatie ongeldig Start () moveSpeed = Vector3.left * Time.deltaTime; InvokeRepeating ("ChangeSpeed", spawnDelay, spawnTime); void ChangeSpeed () moveSpeed = new Vector3 (Random.Range (-1, -2), 0, 0) * 0.05f; // Update wordt eenmaal per frame ongeldig Update () transform.position + = moveSpeed;
De MoveCow
klasse animeert de koe over het scherm met een variabele met de naam bewegingssnelheid
. De InvokeRepeating
methode verandert de snelheid van de koe om hem te laten sprinten vanaf het moment dat hij het midden van de scène bereikt. Dit maakt het spel uitdagender.
Met de nodige componenten toegevoegd aan de koe, is het tijd om het om te zetten naar een prefab. Wat is een Prefab? Laten we de Unity-handleiding raadplegen:
"Een prefab is een type activa - een herbruikbaar GameObject dat is opgeslagen in de projectweergave.Prefabs kunnen in meerdere scènes, meerdere keren per scène, worden ingevoegd.Als u een prefab aan een scène toevoegt, maakt u er een instantie van. exemplaren zijn gekoppeld aan de originele Prefab en zijn in wezen klonen ervan.Het maakt niet uit hoeveel exemplaren er in uw project zijn, wanneer u wijzigingen in de Prefab aanbrengt, ziet u de wijziging toegepast op alle exemplaren. "
Als je afkomstig bent van Flash en ActionScript, zou dit bekend moeten klinken. Om de koe in een prefab om te zetten, sleept u de koe van de Hiërarchie paneel naar de Middelen paneel. Dientengevolge, de naam in de Hiërarchie wordt blauw.
Door de koe om te bouwen naar een prefab kunnen we het opnieuw gebruiken, wat handig is omdat het al de nodige componenten bevat.
Het script van de spawner zorgt ervoor dat de koeien verschijnen. Open MonoDevelop - of uw favoriete C # -editor - en maak een nieuw script aan:
gebruikmakend van UnityEngine; met behulp van System.Collections; public class Spawner: MonoBehaviour public float spawnTime = 2f; public float spawnDelay = 2f; openbare GameObject-koe; // Gebruik dit voor initialisatie ongeldig Start () InvokeRepeating ("Spawn", spawnDelay, spawnTime); void Spawn () / * Instantiëren van een koe * / GameObject-kloon = Instantiëren (koe, transform.position, transform.rotation) als GameObject;
We noemen het InvokeRepeating
methode om koeien te spawnen met behulp van de waarden ingesteld door spawnTime
en spawnDelay
. De GameObject
koe
is ingesteld op openbaar en is gemaakt met behulp van de Inspecteur. Klik op de kleine stip aan de rechterkant en selecteer de koe Prefab.
Om de koeien prefab te laten verschijnen, gebruiken we de afbeelding van de koe die we een paar minuten geleden aan de scène hebben toegevoegd. Selecteer het en verwijder de componenten. Voeg vervolgens het spawner-script toe.
Het is tijd om de game te testen. druk op Command + P
om het spel in Unity te spelen. Als alles werkt zoals verwacht, bent u klaar voor de laatste stappen.
Als je tevreden bent met je spel, is het tijd om te selecteren Bouw instellingen van de het dossier menu en klik op de Speler instellingen knop. Dit brengt het Speler instellingen in de Inspecteur paneel waar u de parameters voor uw toepassing kunt aanpassen.
Met behulp van de graphics die je eerder hebt gemaakt, kun je nu een leuk pictogram voor je game maken. Unity toont u de vereiste formaten, die afhankelijk zijn van het platform waarvoor u bouwt.
De splash- of startafbeelding wordt weergegeven wanneer de toepassing wordt gestart.
Zodra uw project correct is geconfigureerd, is het tijd om terug te gaan naar de Bouw instellingen en klik op de Bouwen Knop. Dat is alles wat nodig is om uw spel te bouwen voor testen en / of distributie.
Als u voor iOS bouwt, hebt u Xcode nodig om het binair bestand voor de laatste toepassing te bouwen. Open het Xcode-project en kies Bouwen van de Artikel menu.
In deze zelfstudie hebben we geleerd over de nieuwe 2D-mogelijkheden van Unity, botsingsdetectie en andere aspecten van game-ontwikkeling met Unity.
Experimenteer met het resultaat en pas het aan om het spel je eigen te maken. Ik hoop dat je deze tutorial leuk vond en vond het nuttig.