I den här handledningen visar jag dig hur du utnyttjar de nya 2D-verktygen som ingår i Unity för att skapa ett 2D-spel.
I den här handledningen lär du dig att skapa ett Unity 2D-projekt och skapa ett mobilspel med C # och Unity.
Målet med spelet är att skjuta en teleporteringsstråle vid korna innan de kan nå barnets säkerhet.
I det här projektet kommer du att lära dig följande aspekter av enhetsutveckling:
Öppna enhet och välj Nytt projekt från Fil menyn för att öppna den nya projektdialogrutan. Välj en katalog för ditt projekt och uppsättningStäll in standardvärden för till 2D.
I nästa steg presenteras Unitys gränssnitt. Ställ upp projektet för mobil utveckling genom att välja Bygg inställningar från Fil menyn och välj din valfria plattform.
Enhet kan bygga för iOS, Android, BlackBerry och Windows Phone 8, vilket är bra om du planerar att skapa ett mobilspel för flera plattformar.
Eftersom vi ska skapa ett 2D-spel är det första vi behöver göra efter att ha valt plattformen vi riktar in. Välj storleken på det konstverk som vi ska använda i spelet.
iOS:
Eftersom Android är en öppen plattform finns det många olika enheter, skärmupplösningar och pixeldensiteter. Några av de vanligaste är listade nedan.
Och för Widows Phone och BlackBerry:
Trots att vi kommer att fokusera på IOS-plattformen i denna handledning kan koden användas för att rikta sig mot någon av de andra plattformarna.
Beroende på vilken enhet du riktar in kan du behöva konvertera bilder till den rekommenderade storleken och pixeldensiteten. Du kan göra detta i din favoritbildredigerare. Jag har använt Justera storlek ... funktion under Verktyg menyn i OS X: s Förhandsvisning Ansökan.
Se till att klicka på 2D-knappen i Scen panel. Du kan också ändra den upplösning som används för att visa scenen i Spel panel.
Användargränssnittet i vårt spel blir enkelt. Du kan hitta konstverket för denna handledning i källfilerna i denna handledning.
Du kan använda ett av tre språk i Unity, C #, UnityScript, ett språk som liknar JavaScript när det gäller syntax och Bua. Varje språk har sina fördelar och nackdelar, men det är upp till dig att bestämma vilken du föredrar. Min preferens går till C # -syntaxen, så det är språket jag ska använda i denna handledning.
Om du väljer att använda ett annat språk, se till att du tittar på Unitys Script Reference för exempel.
Unity har byggt ett namn för att vara en bra plattform för att skapa 3D-spel för olika plattformar, som Microsoft Xbox 360, Sony PS3, Nintendo Wii, webben och olika mobila plattformar.
Även om det alltid har varit möjligt att använda Unity for 2D-spelutveckling, var det inte förrän Unity 4.3 släpptes att det inkluderade inbyggt 2D-stöd. Vi lär oss hur vi arbetar med bilder som sprites istället för texturer i nästa steg.
Jag använder ett antal ljud för att förbättra spelupplevelsen. Ljudeffekterna som används i denna handledning finns på Freesound.org.
Innan vi börjar kodning måste vi lägga till våra tillgångar till Unity-projektet. Det finns flera sätt att göra detta:
När du har slutfört det här steget bör du se tillgångarna i ditt projekt Tillgångar mapp i Projekt panel.
Vi är redo att skapa scenen i vårt spel genom att dra objekt till Hierarki eller Scen panel.
Börja med att dra och släppa bakgrunden i Hierarki panel. Det borde då dyka upp i Scen panel.
Eftersom det Scen panelen är inställd för att visa en 2D-vy, kommer du märka att välja Huvudkamera i Hierarki visar en förhandsgranskning av vad kameran ska visa. Du kan också se detta i spelvyn. För att göra hela scenen synlig, ändra Storlek värdet av Huvudkamera till 1,6 i Inspektör panel.
Fartyget är också ett statiskt element som spelaren inte kan interagera med. Placera den i mitten av scenen.
Välj ladugården från Tillgångar panelen och dra den till scenen. Placera den som illustrerad i skärmdumpen nedan.
För att försäkra sig om att ladan anmäls när en ko träffar den - går in i ladan - måste vi lägga till en komponent, a Box Collider 2D att vara precis.
Välj ladugården i scenen, öppna Inspektör panelen och klicka på Lägg till komponent. Från listan över komponenter väljer du Box Collider 2D från Fysik 2D sektion. Se till att kontrollera Är utlösare låda.
Vi vill att koen ska reagera när den träffar ladugårdsdörren, så vi behöver göra colliden lite mindre. Öppna Inspektör och ändra Storlek och Centrum värden av colliderna för att flytta lådan närmare laddningsdörren.
Det är dags att skriva en kod. Vi måste lägga till ett skript så att ansökan kan svara på kollisionen när en ko går in i ladan.
Välj ladan och klicka på Lägg till komponent knapp i Inspektör panel. Välj Ny Script och namnge det OnCollision. Kom ihåg att byta språk till C #.
Öppna den nyskapade filen och lägg till följande kodbit.
använder UnityEngine; Använda System.Collections; public class OnCollision: MonoBehaviour void OnTriggerEnter2D (Collider2D andra) if (other.gameObject.name == "cow (Clone)") / * Spela spara ko ljudet * / audio.Play (); / * Förstör cow * / Destroy (other.gameObject);
Klippet kontrollerar en kollision mellan det objekt som skriptet är länkat till, ladan och ett objekt som heter ko (klon)
, som kommer att vara en förekomst av koen Prefab som vi ska skapa senare. När en kollision äger rum spelas ett ljud och koobjektet förstörs.
För att spela ett ljud när en ko träffar ladan måste vi först fästa ljudet på ladan. Välj det från Hierarki eller Scen visa, klicka på Lägg till komponent knapp i Inspektör panel och välj Ljudkälla från Audio sektion.
Avmarkera Spela på Vakna och klicka på den lilla punkten till höger, nedanför växelsymbolen, för att välja barnljudet.
Du kan öka storleken på ikonerna i Unitys användargränssnitt (gizmos) genom att klicka Gizmos i Scen panel och justera reglaget läge.
Dra strålbilden från Tillgångar panel till scenen och lägga till en collider till den. Detta är nödvändigt för att upptäcka en kollision med den oturliga koen. KollaÄr utlösare alternativet i Inspektör panel.
Skapa ett nytt skript genom att upprepa de steg jag skisserade för några minuter sedan. Namn manuset Kulaoch ersätt dess innehåll med följande kodbit:
använder UnityEngine; Använda System.Collections; offentlig klass Bullet: MonoBehaviour public AudioClip cowSound; // Använd detta för initialisering tomt Start () renderer.enabled = false; / * Gör objekts osynlig * / // Uppdatering kallas en gång per ram tomt Uppdatering () / * Hämta huvudinmatning * / if (Input.GetButton ("Fire1")) renderer.enabled = true; / * Gör objekt synligt * / / * Spela upp ljudet ljud / ljud. Spela (); om (renderer.enabled == true) transform.position + = Vector3.down * (Time.deltaTime * 2); / * Kontrollera om det är obegränsat * / om (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;
Det är mycket kod, men det är inte komplicerat. Låt oss se vad som händer. Först skapar vi en AudioClip
exemplet heter cowSound
, som vi ska använda för att lagra en ljudfil. Det här är bara en annan teknik för att spela ett ljud om du inte vill lägga till två ljudkomponenter i objektet. Vi förklarar variabeln som offentlig så vi kan få tillgång till den från Inspektör. Klicka på den lilla punkten till höger om cowSound och välj ljudfilen.
Vi gör sedan strålen osynlig genom att inaktivera dess renderare. Vi använder samma objekt så att vi kan spara resurser, vilket är en viktig optimering för mindre kraftfulla enheter.
Vi upptäcker beröring på skärmen, vilket gör att strålen syns och spelar upp ljudet (se nedan). Om objektet är synligt betyder det att det ska gå ner för att slå en ko.
Det finns också kod för att upptäcka om strålen ligger utanför scenens gränser. Om så är fallet lägger vi om det, redo att elda igen (kontrollera strålens x och y värden i Inspektör).
Den sista delen kontrollerar om strålen träffar en ko. Om det gör det spelar det kohjudet och förstör koen. Remsan görs då osynlig och omplaceras vid sin ursprungliga position, redo att elda igen.
För att lägga till ljudet för strålen, välj det i Hierarki eller Scen Visa och klicka Lägg till komponent i Inspektör panel. Välj Ljudkälla från Audio sektion. Avmarkera Spela på Vakna och klicka på den lilla pricken till höger för att välja ljudfilen.
Dra grafiken för koen från Tillgångar panel och placera den i scenen som visas nedan.
För att upptäcka en kollision måste minst en av de kolliderande objekten ha en RigidBody2D komponent associerad med den. Eftersom koen kan kollidera med både ladugården och strålen är det bäst att lägga till komponenten till koen.
Vi måste också lägga till en collider till koen så att vi kan upptäcka kollisioner med ladan och strålen. Se till att kontrollera Är utlösare kryssrutan i rutan Inspektör.
Lägg till en skriptkomponent till koen och ersätt dess innehåll med följande:
använder UnityEngine; Använda System.Collections; offentlig klass MoveCow: MonoBehaviour public Vector3 moveSpeed; offentlig float spawnTime = 2f; offentlig float spawnDelay = 2f; // Använd detta för initialisering tomt Start () moveSpeed = Vector3.left * Time.deltaTime; InvokeRepeating ("ChangeSpeed", spawnDelay, spawnTime); void ChangeSpeed () moveSpeed = ny Vector3 (Random.Range (-1, -2), 0, 0) * 0,05f; // Uppdatering kallas en gång per ram tomt Uppdatering () transform.position + = moveSpeed;
De MoveCow
klass animerar koen över skärmen med hjälp av en variabel som heter moveSpeed
. De InvokeRepeating
Metoden ändrar koens hastighet så att den sprint från det ögonblick som den når mitten av scenen. Detta gör spelet mer utmanande.
Med de nödvändiga komponenterna till koen är det dags att konvertera det till en Prefab. Vad är en Prefab? Låt oss konsultera Unity Manual:
"En Prefab är en typ av tillgång, en återanvändbar GameObject som lagras i Project View. Prefabs kan sättas in i ett antal scener, flera gånger per scen. När du lägger till en Prefab för en scen skapar du en förekomst av den. instanser är kopplade till original Prefab och är i huvudsak kloner av det. Oavsett hur många exempel som finns i ditt projekt, när du gör några ändringar i Prefab kommer du att se ändringen applicerad på alla instanser. "
Om du kommer från Flash och ActionScript ska det här låta bekant. För att konvertera koen till en prefab, dra koen från Hierarki panel till Tillgångar panel. Som ett resultat namnet i Hierarki blir blå.
Omvandling av koen till en prefab gör det möjligt för oss att återanvända det, vilket är bekvämt eftersom det redan innehåller de nödvändiga komponenterna.
Spawner-skriptet är ansvarigt för att korna ska visas. Öppna MonoDevelop-eller din favorit C # -redigerare och skapa ett nytt skript:
använder UnityEngine; Använda System.Collections; offentlig klass Spöner: MonoBehaviour public float spawnTime = 2f; offentlig float spawnDelay = 2f; allmän GameObject ko; // Använd detta för initialisering tomt Start () InvokeRepeating ("Spawn", spawnDelay, spawnTime); void Spawn () / * Instantiate a cow * / GameObject klon = Instantiate (ko, transform.position, transform.rotation) som GameObject;
Vi kallar InvokeRepeating
Metod för att gissa kor med hjälp av de värden som anges spawnTime
och spawnDelay
. De GameObject
ko
är inställd på allmänheten och skapas med hjälp av Inspektör. Klicka på den lilla pricken till höger och välj ko Prefab.
För att instantiera koens prefab, använder vi grafiken av den ko som vi lagt till på scenen för några minuter sedan. Välj den och ta bort dess komponenter. Lägg sedan till Spawner-skriptet.
Det är dags att testa spelet. Tryck Kommando + P
att spela spelet i Unity. Om allt fungerar som förväntat, är du redo för de sista stegen.
När du är nöjd med ditt spel är det dags att välja Bygg inställningar från Fil menyn och klicka på Spelarens inställningar knapp. Detta ger upphov till Spelarens inställningar i Inspektör panel där du kan justera parametrarna för din applikation.
Med den grafik du skapade tidigare kan du nu skapa en bra ikon för ditt spel. Enhet visar dig vilka storlekar som krävs, vilket beror på vilken plattform du bygger för.
Stänk- eller startbilden visas när programmet startas.
När ditt projekt är korrekt konfigurerat är det dags att återkomma Bygg inställningar och klicka på Bygga Knapp. Det är allt som krävs för att bygga ditt spel för testning och / eller distribution.
Om du bygger för iOS behöver du Xcode för att bygga den slutliga applikationen binära. Öppna Xcode-projektet och välj Bygga från Produkt meny.
I denna handledning har vi lärt oss om de nya 2D-egenskaperna hos enhet, kollisionsdetektering och andra aspekter av spelutveckling med enhet.
Experimentera med resultatet och anpassa det för att göra spelet ditt eget. Jag hoppas att du gillade den här handledningen och fann den till hjälp.