Arbeide med Unitys 2D-verktøy

I denne veiledningen viser jeg deg hvordan du kan dra nytte av det nye 2D-verktøyet som er inkludert i Unity for å lage et 2D-spill.

1. Applikasjonsoversikt

I denne opplæringen lærer du hvordan du lager et Unity 2D-prosjekt og lager et mobilspill med C # og Unity.

Målet med spillet er å skyte en teleporterende stråle på kyrene før de kan nå sikkerheten til låven.

I dette prosjektet lærer du følgende aspekter av enhetlig utvikling:

  • sette opp et 2D-prosjekt i Unity
  • bli kjent med Unity-grensesnittet
  • lage en prefab
  • Vedlegg av skript til spillobjekter
  • jobber med fysikk kollisjoner
  • bruker timere

2. Lag et nytt enhetsprosjekt

Åpne enhet og velg Nytt prosjekt fra Fil menyen for å åpne den nye prosjektdialogen. Velg en katalog for prosjektet ditt og settAngi standardinnstillinger for til 2D.


3. Bygg innstillinger

I neste trinn presenteres du med Unitys grensesnitt. Sett prosjektet opp for mobil utvikling ved å velge Bygg innstillinger fra Fil menyen og velg din valgfri plattform.

Enhet kan bygge for iOS, Android, BlackBerry og Windows Phone 8, noe som er flott hvis du planlegger å lage et mobilspill for flere plattformer.


4. enheter

Siden vi skal lage et 2D-spill, er det første vi må gjøre etter at du har valgt plattformen vi målretter, og velger størrelsen på bildet som vi skal bruke i spillet..

iOS:

  • iPad uten retina: 1024px x 768px
  • iPad med retina: 2048px x 1536px
  • 3,5 "iPhone / iPod Touch uten Retina: 320px x 480px
  • 3,5 "iPhone / iPod med netthinnen: 960px x 640px
  • 4 "iPhone / iPod Touch: 1136px x 640px

Fordi Android er en åpen plattform, er det mange forskjellige enheter, skjermoppløsninger og pikseldensiteter. Noen av de vanligste er listet opp nedenfor.

  • 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

Og for Enker Telefon og BlackBerry:

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

Selv om vi vil fokusere på iOS-plattformen i denne opplæringen, kan koden brukes til å målrette mot noen av de andre plattformene.


5. Eksporter grafikk

Avhengig av enheten du målretter mot, må du kanskje konvertere illustrasjonen til den anbefalte størrelsen og pixeldensiteten. Du kan gjøre dette i favorittbildeditoren din. Jeg har brukt Juster størrelse ... fungere under Verktøy menyen i OS X Forhåndsvisning applikasjon.


6. Enhetsgrensesnitt

Pass på at du klikker 2D-knappen i scene panel. Du kan også endre oppløsningen som brukes til å vise scenen i Spill panel.


7. Spillgrensesnitt

Brukergrensesnittet til spillet vårt vil være enkelt. Du finner kunstverket for denne opplæringen i kildefilene i denne opplæringen.


8. Språk

Du kan bruke ett av tre språk i Unity, C #, UnityScript, et språk som ligner på JavaScript når det gjelder syntaks, og Boo. Hvert språk har sine fordeler og ulemper, men det er opp til deg å bestemme hvilken du foretrekker. Min preferanse går til C # -syntaxen, så det er språket jeg skal bruke i denne opplæringen.

Hvis du bestemmer deg for å bruke et annet språk, så sørg for å se på Unitys Script Reference for eksempler.


9. 2D-grafikk

Unity har bygget et navn for å være en god plattform for å lage 3D-spill for ulike plattformer, for eksempel Microsoft Xbox 360, Sony PS3, Nintendo Wii, nettet og ulike mobile plattformer.

Selv om det alltid har vært mulig å bruke Unity for 2D spillutvikling, var det ikke før utgivelsen av Unity 4.3 at den inkluderte innfødt 2D-støtte. Vi lærer å jobbe med bilder som sprites istedenfor teksturer i de neste trinnene.


10. Lydeffekter

Jeg bruker en rekke lyder for å forbedre spillopplevelsen. Lydeffektene som brukes i denne opplæringen finner du på Freesound.org.


11. Importer eiendeler

Før vi starter kodingen, må vi legge til våre eiendeler til Unity-prosjektet. Det er flere måter å gjøre dette på:

  • å velge Importer nytt aktiv fra Eiendeler Meny
  • legg til elementene i aktivitetsmappen i prosjektet ditt
  • dra og slipp aktivaene i prosjektvinduet

Etter å ha fullført dette trinnet, bør du se eiendelene i prosjektet ditt Eiendeler mappe i Prosjekt panel.

12. Opprett scene

Vi er klare til å lage scenen til spillet vårt ved å dra objekter til hierarki eller scene panel.


13. Bakgrunn

Begynn med å dra og slippe bakgrunnen i hierarki panel. Det skal da vises i scene panel.

Fordi det scene panelet er satt til å vise en 2D-visning, vil du legge merke til å velge Hovedkamera i hierarki viser en forhåndsvisning av hva kameraet skal vise. Du kan også se dette i spillvisningen. For å gjøre hele scenen synlig, endre Størrelse verdien av Hovedkamera til 1.6 i Inspektør panel.


14. Skip

Skipet er også et statisk element som spilleren ikke vil kunne kommunisere med. Plasser den i midten av scenen.


15. Barn

Velg låven fra Eiendeler panelet og dra det til scenen. Plasser den som vist på skjermbildet nedenfor.


16. Barn Collider

For å sikre at låven blir varslet når en ku treffer den - går inn i låven - må vi legge til en komponent, a Box Collider 2D For å være presis.

Velg låven i scenen, åpne Inspektør panelet, og klikk Legg til komponent. Fra listen over komponenter velger du Box Collider 2D fra Fysikk 2D seksjon. Pass på å sjekke Er Trigger eske.

Vi vil at kua skal reagere når den treffer døren til låven, slik at vi må gjøre collider litt mindre. Åpne Inspektør og endre Størrelse og Senter verdier av collider for å flytte boksen nærmere døren til låven.


17. Barnekollisjonsscript

Det er på tide å skrive noen kode. Vi må legge til et skript slik at søknaden kan svare på kollisjonen når et ku går inn i låven.

Velg låven og klikk på Legg til komponent knappen i Inspektør panel. Å velge Nytt skript og nev det OnCollision. Husk å endre språket til C #.

Åpne den nyopprettede filen og legg til følgende kodestykke.

bruker UnityEngine; bruker System.Collections; offentlig klasse OnCollision: MonoBehaviour void OnTriggerEnter2D (Collider2D andre) if (other.gameObject.name == "cow (Clone)") / * Spill lagre kua lyden * / audio.Play (); / * Destroy kua * / Destroy (other.gameObject); 

Utklippet kontrollerer for en kollisjon mellom objektet som skriptet er koblet til, låven og en gjenstand som heter ku (klon), som vil være en forekomst av kua Prefab som vi lager senere. Når en kollisjon finner sted, spilles en lyd og kuobjektet blir ødelagt.


18. Barn lyd

For å spille en lyd når et ku treffer låven, må vi først legge lyden til låven. Velg den fra hierarki eller scene vis, klikk på Legg til komponent knappen i Inspektør panelet, og velg Lydkilde fra Audio seksjon.

Fjern merkingen Spill på Awake og klikk på den lille prikken til høyre, under tannhjulikonet, for å velge barnelyddet.

Du kan øke størrelsen på ikonene i Unitys brukergrensesnitt (gizmoer) ved å klikke dingser i scene panel og justere glidebryterens posisjon.


19. Ray

Dra strålegrafikken fra Eiendeler panel til scenen og legg til en collider til den. Dette er nødvendig for å oppdage en kollisjon med uheldig ku. UndersøkEr Trigger alternativ i Inspektør panel.

20. Ray Script

Opprett et nytt skript ved å gjenta trinnene jeg skisserte for noen få øyeblikk siden. Gi navnet på skriptet Kuleog erstatt innholdet med følgende kodestykke:

bruker UnityEngine; bruker System.Collections; offentlig klasse Bullet: MonoBehaviour public AudioClip cowSound; // Bruk dette for initialisering tomt Start () renderer.enabled = false; / * Gjør objekt usynlig * / // Oppdatering kalles en gang per ramme ugyldig Oppdatering () / * Få hovedinngang * / hvis (Input.GetButton ("Fire1")) renderer.enabled = true; / * Gjør objekt synlig * / / * Spill av lyden * / lyd. Spill ();  hvis (renderer.enabled == true) transform.position + = Vector3.down * (Time.deltaTime * 2);  / * Sjekk ut av grensen * / hvis (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 er mye kode, men det er ikke komplisert. La oss se hva som skjer. Først oppretter vi en AudioClip forekomst heter cowSound, som vi skal bruke til å lagre en lydfil. Dette er bare en annen teknikk for å spille en lyd hvis du ikke vil legge til to lydkomponenter til objektet. Vi erklærer variabelen som offentlig, så vi kan få tilgang til den fra Inspektør. Klikk på den lille prikken til høyre for cowSound og velg lydfilen.

Vi lager rayen usynlig ved å deaktivere rendereren. Vi bruker det samme objektet, slik at vi kan spare ressurser, noe som er en viktig optimalisering for mindre kraftige enheter.

Vi oppdager berøringer på skjermen, noe som gjør at strålen synlig og spiller av lyden (se nedenfor). Hvis objektet er synlig, betyr det at det skal gå ned for å slå en ku.

Det er også kode for å oppdage om strålen er utenfor scenens grenser. Hvis dette er tilfelle, plasserer vi det igjen, klar til å brenne igjen (sjekk strålen x og y verdier i Inspektør).

Den siste delen kontrollerer om strålen treffer en ku. Hvis det gjør det, spiller det kua lyden og ødelegger kua. Strålen blir så gjort usynlig og reposisjonert i sin opprinnelige posisjon, klar til brann igjen.


21. Ray lydkilde

For å legge til lyden for strålen, velg den i hierarki eller scene se og klikk Legg til komponent i Inspektør panel. Å velge Lydkilde fra Audio seksjon. Fjern merkingen Spill på Awake og klikk på den lille prikken til høyre for å velge lydfilen.


22. Legg til en ku

Dra grafikken for kua fra Eiendeler panelet og plasser det i scenen som vist nedenfor.


23. Stiv kropp 2D

For å oppdage en kollisjon må minst en av de kolliderende objekter ha en RigidBody2D komponent assosiert med den. Som kua kan kollidere med både låven og strålen, er det best å legge komponenten til kua.


24. Cow Collider

Vi må også legge til en collider til kua slik at vi kan oppdage kollisjoner med låven og strålen. Pass på å sjekke Er Trigger merk av i boksen Inspektør.


25. Flytt Cow Script

Legg til en skriptkomponent til kua og erstatt innholdet med følgende:

bruker UnityEngine; bruker System.Collections; offentlig klasse MoveCow: MonoBehaviour offentlig Vector3 moveSpeed; offentlig float spawnTime = 2f; offentlig float spawnDelay = 2f; // Bruk dette for 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;  // Oppdatering kalles en gang per ramme ugyldig Oppdatering () transform.position + = moveSpeed; 

De MoveCow klassen animerer kua over skjermen ved hjelp av en variabel som heter moveSpeed. De InvokeRepeating Metode endrer koens hastighet for å få det til å sprette fra det øyeblikket det når sentrum av scenen. Dette gjør spillet mer utfordrende.


26. Lag ko Prefab

Med de nødvendige komponentene lagt til kua, er det på tide å konvertere det til en Prefab. Hva er en Prefab? La oss konsultere Unity Manual:

"En Prefab er en type ressurs-en gjenbrukbar GameObject som er lagret i Project View. Prefabs kan settes inn i et hvilket som helst antall scener, flere ganger per scene. Når du legger til en Prefab til en scene, oppretter du en forekomst av den. forekomster er knyttet til den originale Prefab og er i hovedsak kloner av det. Uansett hvor mange forekomster som finnes i prosjektet ditt, når du gjør endringer i Prefab vil du se endringen som er brukt på alle forekomster. "

Hvis du kommer fra Flash og ActionScript, bør dette høres godt kjent. For å konvertere kua til en prefab, dra kua fra hierarki panel til Eiendeler panel. Som et resultat, navnet i hierarki vil bli blå.

Konvertering av ku til prefabrikker gir oss mulighet til å gjenbruke den, noe som er praktisk fordi det allerede inneholder de nødvendige komponentene.


27. Spawner Script

Spawner-skriptet er ansvarlig for at kyrene vises. Åpne MonoDevelop-eller din favoritt C # editor - og opprett et nytt skript:

bruker UnityEngine; bruker System.Collections; offentlig klasse Spawner: MonoBehaviour public float spawnTime = 2f; offentlig float spawnDelay = 2f; offentlig GameObject ku; // Bruk dette for initialisering tomt Start () InvokeRepeating ("Spawn", spawnDelay, spawnTime);  void Spawn () / * Instantiate a cow * / GameObject klone = Instantiate (ku, transform.position, transform.rotation) som GameObject; 

Vi kaller InvokeRepeating Metode for å gyte kyr ved å bruke verdiene satt av spawnTime og spawnDelay. De GameObject ku er satt til offentlig og er opprettet ved hjelp av Inspektør. Klikk den lille prikken til høyre og velg kua Prefab.


28. Spawner Game Object

For å instantiere kua prefab, bruker vi grafikken til kua vi har lagt til scenen for noen minutter siden. Velg den og fjern komponentene. Legg deretter til Spawner-skriptet.


29. Testing

Det er på tide å teste spillet. trykk Kommando + P å spille spillet i Unity. Hvis alt fungerer som forventet, er du klar for de siste trinnene.


30. Spillerinnstillinger

Når du er fornøyd med spillet ditt, er det på tide å velge Bygg innstillinger fra Fil menyen og klikk på Spillerinnstillinger knapp. Dette bringer opp Spillerinnstillinger i Inspektør panel der du kan justere parametrene for søknaden din.


31. Programikon

Ved å bruke grafikken du opprettet tidligere, kan du nå lage et fint ikon for spillet ditt. Enhet viser deg de nødvendige størrelsene, som avhenger av plattformen du bygger for.


32. Splash Image

Plask eller startbilde vises når programmet startes.

33. Bygg

Når prosjektet ditt er riktig konfigurert, er det på tide å besøke Bygg innstillinger og klikk på Bygge Knapp. Det er alt som trengs for å bygge spillet ditt for testing og / eller distribusjon.

34. Xcode

Hvis du bygger for iOS, trenger du Xcode for å bygge den endelige applikasjonen binær. Åpne Xcode-prosjektet og velg Bygge fra Produkt Meny.

Konklusjon

I denne opplæringen har vi lært om de nye 2D-egenskapene til enhet, kollisjonsdeteksjon og andre aspekter av spillutvikling med enhet.

Oppsøke resultatet og tilpasse det for å gjøre spillet ditt eget. Jeg håper du likte denne opplæringen og fant det nyttig.