Arbeta med Unitys 2D-verktyg

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.

1. Applikationsöversikt

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:

  • inrätta ett 2D-projekt i Unity
  • bli bekant med Unity-gränssnittet
  • skapa en prefab
  • bifoga skript till spelobjekt
  • arbetar med fysik kollisioner
  • använder timers

2. Skapa ett nytt enhetsprojekt

Ö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.


3. Bygg inställningar

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.


4. Anordningar

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:

  • iPad utan näthinnan: 1024px x 768px
  • iPad med näthinnan: 2048px x 1536px
  • 3,5 "iPhone / iPod Touch utan retina: 320px x 480px
  • 3,5 "iPhone / iPod med näthinnan: 960px x 640px
  • 4 "iPhone / iPod Touch: 1136px x 640px

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.

  • Asus Nexus 7 Tablet: 800px x 1280px, 216 ppi
  • Motorola Droid X: 854px x 480px, 228 ppi
  • Samsung Galaxy SIII: 720px x 1280px, 306 ppi

Och för Widows Phone och BlackBerry:

  • Blackberry Z10: 720px x 1280px, 355 ppi
  • Nokia Lumia 520: 400px x 800px, 233 ppi
  • Nokia Lumia 1520: 1080px x 1920px, 367 ppi

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.


5. Exportera grafik

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.


6. Enhetsgränssnitt

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.


7. Game Interface

Användargränssnittet i vårt spel blir enkelt. Du kan hitta konstverket för denna handledning i källfilerna i denna handledning.


8. Språk

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.


9. 2D-grafik

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.


10. Ljudeffekter

Jag använder ett antal ljud för att förbättra spelupplevelsen. Ljudeffekterna som används i denna handledning finns på Freesound.org.


11. Importera tillgångar

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:

  • Välj Importera ny tillgång från Tillgångar meny
  • lägg till objekten i aktivitetsmappen i ditt projekt
  • dra och släpp tillgångarna i projektfönstret

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.

12. Skapa scen

Vi är redo att skapa scenen i vårt spel genom att dra objekt till Hierarki eller Scen panel.


13. Bakgrund

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.


14. Fartyg

Fartyget är också ett statiskt element som spelaren inte kan interagera med. Placera den i mitten av scenen.


15. Barn

Välj ladugården från Tillgångar panelen och dra den till scenen. Placera den som illustrerad i skärmdumpen nedan.


16. Barn Collider

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.


17. Barnkollisionsskript

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.


18. Barnljud

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.


19. Ray

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.

20. Ray Script

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.


21. Ray Audio Source

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.


22. Lägg till en ko

Dra grafiken för koen från Tillgångar panel och placera den i scenen som visas nedan.


23. Stark kropp 2D

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.


24. Cow Collider

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.


25. Flytta Cow Script

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.


26. Skapa ko Prefab

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.


27. Spawner Script

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.


28. Spawner Game Object

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.


29. Testning

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.


30. Spelarens inställningar

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.


31. Programikon

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.


32. Splash Image

Stänk- eller startbilden visas när programmet startas.

33. Bygg

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.

34. Xcode

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.

Slutsats

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.