Create en Basketball frikast Spill med Unity 
 53 
 Del 
 8 
 Del 
 Dette Cyber Monday Envato Tuts + kurs vil bli redusert til bare $ 3. Ikke gå glipp av. 
 Hva du skal lage 
 Innledning 
 
 I denne opplæringen vil du lære hvordan du kan lage en mobil 3D-spill ved hjelp av C # og Unity. Målet med spillet er å score så mange poeng som mulig. Du vil lære følgende aspekter av Unity spillutvikling: 
 
 Sette opp en 3D-prosjekt i Unity 
 
 Implementering tappe kontroller 
 
 Integrering fysikk 
 
 Opprette prefabs 
 
1. Opprett et nytt Unity Prosjekt
 Åpne Unity og velg  Nytt prosjekt 
 fra  Fil 
 menyen for å åpne den nye dialogen prosjektet. Fortell Unity hvor du vil lagre prosjektet og sette  
  Sett opp standardverdier for:. 
 Menyen til  3D 
 
 
 2. Bygg Innstillinger 
 
 I neste trinn, du presentert med Unity brukergrensesnitt. Sette prosjektet opp for mobil utvikling ved å velge  Bygg Settings 
 fra  Fil 
 meny og velg din foretrukne plattform. Jeg har valgt Android for denne opplæringen. 
 
 
 3. Enheter 
 
 Det første vi må gjøre etter å ha valgt den plattformen vi målretter er å velge størrelsen på kunstverk som vi skal bruke i spillet. Jeg har listet opp de viktigste enhetene for hver plattform under og følger enhetens skjerm oppløsning og pikseltetthet 
 
 iOS 
 
 iPad. 1024px x 768px 
 
 iPad Retina: 2048 piksler x 1536px 
 
 3,5 "iPhone /iPod Touch: 320px x 480px 
 
 3,5" iPhone /iPod Retina: 960 x x 640px 
 
 4 "iPhone /iPod Touch: 1136px x 640px 
 
 Android 
 
 Fordi Android er en åpen plattform, er det mange forskjellige enheter, skjermoppløsninger, og pikseltetthet. Noen av de mer vanlige de er listet opp nedenfor. 
 
 Asus Nexus 7 Tablet: 800px x 1280px, 216ppi 
 
 Motorola Droid X: 854px x 480px, 228ppi 
 
 Samsung Galaxy S3: 720px x 1280px, 306ppi < .no> 
 Windows Phone 
 
 Nokia Lumia 520: 400px x 800px, 233ppi 
 
 Nokia Lumia 1 520: 1080px x 1920px, 367ppi 
 < h3> Blackberry 
 
 Blackberry Z10: 720px x 1280px, 355ppi 
 
 Husk at koden som brukes for denne opplæringen kan brukes til å målrette noen av de ovennevnte plattformer   4. Eksport Graphics   Avhengig av hvilke enheter du målretter, kan det hende du må konvertere skisser for spillet til anbefalt størrelse og oppløsning. Du kan gjøre dette i din favoritt bilde editor. Jeg har brukt den  Juster størrelse ...   Før vi kommer i gang, sørg for å klikke på  3D   Grensesnittet i spillet vårt vil være grei. Skjermbildet over gir deg en idé av kunstverket vi skal bruke og hvordan spillets grensesnitt vil ende opp som ser. Du kan finne illustrasjoner og tilleggsressurser i kildefilene for denne opplæringen.   Du kan bruke en av tre programmeringsspråk når du bruker Unity,  C #   Hvis du velger å bruke et annet programmeringsspråk, så sørg for å ta en titt på Unity sin Script Reference for eksempler .   Jeg skal bruke en rekke lyder å forbedre audial opplevelsen av spillet. Lydeffektene er brukt i denne opplæringen ble hentet fra as3sfxr og Soungle.   For å lage spillet vårt, trenger vi først å få våre 3D-modeller. Jeg anbefaler 3Docean for høy kvalitet modeller, teksturer og mer, men hvis du tester eller fortsatt læring deretter gratis modeller kan være et godt sted å begynne.   Modellene i denne opplæringen ble lastet ned fra SketchUp 3D-galleriet hvor du kan finne et godt utvalg av modeller av alle slag.   Fordi Unity ikke gjenkjenner SketchUp filformat, trenger vi å konvertere SketchUp filer til et filformat Unity kan importere. Start med å laste ned gratis versjon av SketchUp, SketchUp Gjør   Åpne din 3D-modell i SketchUp Lag og gå velg  Export >.; 3D Model   Velg et navn, velg en katalog, og Klikk på  Eksporter   Før vi begynner koding, må vi legge våre eiendeler til Unity prosjektet. Du kan gjøre dette én av flere måter.   Etter å ha fullført dette trinnet, bør du se verdiene i prosjektets  Eiendeler   Vi er klar til å lage scene av spillet vårt ved å dra objekter til  Hierarki   Start ved å dra og slippe bakgrunnen inn i  Hierarki   Målet med spillet er å kaste ballen gjennom bøylen. Dra den fra  Eiendeler   Som du kanskje har lagt merke til, er det basketball hoop litt for mørkt. For å fikse dette, må vi legge til en  Lys   Med basketball hoop skikkelig tent, sin tid legge en Collider slik at ballen ikke går gjennom når den treffer det hvite området.   Klikk på  Legg til Component   Du vil se en grønn ramme rundt basketballkurven i  Scene   Hvis vi skulle kaste en ball på basketballkurv, det ville bli stoppet av boksen Collider, men det ville stoppe uten å sprette som du forventer det til i den virkelige verden. For å bøte på dette trenger vi en  Fysikk Material   Når du har valgt  Lag >.; Fysikk Material   Endre sine egenskaper i  Inspector   Deretter velger boksen Collider av basketballkurv og klikk på den lille prikken til høyre for  Material   Vi vil bruke en annen Collider å oppdage når ballen passerer gjennom bøylen. Dette bør være en trigger Collider å sørge for at det oppdager kollisjonen uten samspill med fysikk kroppen.   Opprett en ny Collider for bøyle som vist i trinn 15 og oppdatere sine verdier som vist i neste skjermbilde.   Dette vil plassere Collider under ringen der ballen ikke kan gå tilbake oppover, noe som betyr at en kurv har blitt gjort. Sørg for å sjekke  Er Trigger   På tide å legge en Collider i ringen selv. Fordi vi trenger ballen passere gjennom midten av ringen, kan vi ikke ha en kule eller boks Collider, i stedet vil vi bruke en  Mesh Collider   En  Mesh Collider   Velg rammen fra  Hierarki   Legg til en Collider som vi så i trinn 15, men sørg for å velge  Mesh Collider   Hvis du vil spille av en lyd når ballen treffer bøyle, trenger vi først å feste den. Velg det fra  Hierarki   kryssene  Spill på Awake Hotell og klikk den lille prikken på høyre side, under tannhjulikonet, for å velge lyden du vil å spille.   La oss nå fokusere på basketball. Dra den fra  mappe Eiendeler Kjøpe og plassere den i scenen. Ikke bekymre deg om ballens posisjon for nå, fordi vi vil konvertere den til en  Prefab   For å få ballen oppdage når den treffer bøyle, må vi legge til en komponent, en  Sphere Collider   For å oppdage en kollisjon med basketball, minst en av de kolliderende objektene må ha en  RigidBody   La innstillingene på standardverdier og dra ballen fra  Hierarki   Å representere kurver som allerede er gjort av spilleren, bruker vi en 2D-versjon av basketballkurv. Dra den fra Eiendeler panelet og plassere den på scenen, som vist nedenfor.   Under 2D bøyle, viser vi antall kurver spilleren har scoret så langt. Velg  GameObject > Opprett Andre > GUI Tekst   Du kan bygge en tilpasset skrift ved å importere den i  mappe Eiendeler Kjøpe og endre  Font   Kraften meter er en bar som viser kraften som brukes til å skyte ballen. Dette vil legge til en annen vanskelighetsgrad i spillet. Dra sprites for kraften meter fra  Eiendeler   Vi legger også en indikator til grensesnittet som viser hvor mange skudd spilleren har forlatt. For å fullføre dette trinnet, følger de samme trinnene vi brukte for å vise spillerens nåværende poengsum.   Det er endelig tid til å skrive noen kode. Det første manuset at vi vil lage er den Basket script som sjekker om ballen passerer gjennom ringen eller treffer styret.   Velg rammen og klikk   I dette skriptet, setter vi to offentlige variabler som representerer objekter på  Scene Hotell og i  mappe Eiendeler   Vi spiller en lyd når ballen treffer basketball bøyle og sjekke om ballen går gjennom ringe. Den Parse metoden vil konvertere teksten fra  GUI Tekst   The Shoot klasse håndterer resten av spillet interaksjon. Vi vil bryte manusets innholdet ned for å gjøre det lettere å fordøye.   Start ved å velge  Kamera Hotell og klikk på  Legg til Component   I neste kodebiten, jeg har listet opp de variablene som vi vil bruke. Les kommentarene i kodebiten for avklaring   Deretter oppretter vi Start-metode der satt vi tyngdekraften til -20 for å få ballen fallet raskere.   For å håndtere interaksjoner med fysikkmotor, vi implementere FixedUpdate metoden. Forskjellen mellom denne metoden og den vanlige Update metoden er at FixedUpdate kjører basert på fysikk trinn i stedet for hver ramme, som kan forårsake problemer hvis enheten er treg på grunn av mangel på minne, for eksempel.   I . FixedUpdate metoden vi flytte pilen av kraften meter bruker riktig variabel for å oppdage når å snu pilen bevegelse   basketball kastes når spilleren kraner skjermen. Når skjermen er tappet, vi først sjekke om det allerede finnes en ball i luften, og hvis spilleren har skudd tilgjengelig. Dersom disse kravene er oppfylt, vi oppdaterer verdiene, opprette en ny forekomst av ballen, og kaste det ved hjelp av addForce metoden Twitter /* Shoot ball på trykk * /if (Input.GetButton ("Fire1") &.; &! kastet & & availableShots > 0) {kastet = true; availableShots--; . availableShotsGO.GetComponent () text = availableShots.ToString (); ballClone = instantiate (ball, ballPos, transform.rotation) som GameObject; throwSpeed.y = throwSpeed.y + arrow.transform.position.x; throwSpeed.z = throwSpeed.z + arrow.transform.position.x; ballClone.rigidbody.AddForce (throwSpeed, ForceMode.Impulse); audio.Play (); //play shoot lyd}   I følgende kode blokken, tester vi om ballen når gulvet og fjerne når den gjør det. Vi har også forberede neste kast ved å tilbakestille variablene Twitter /* Fjern Ball når den treffer gulvet * /if. (BallClone = null &! &Amp; ballClone.transform.position.y < -16) {Destroy (ballClone); kastet = false; throwSpeed = new Vector3 (0, 26, 40); //Tilbake perfekt skudd variabel   Etter å ha fjernet ballen, bekrefter vi at spilleren har bilder igjen. Hvis dette ikke er tilfelle, så vi avslutte spillet og samtalen restart Twitter /* Sjekk om ut av skuddene * /if (availableShots == 0) {arrow.renderer.enabled = false.; Instantiate (Gameover, ny Vector3 (0.31f, 0.2f, 0), transform.rotation); Påkall ("restart", 2); }}}   restart metoden går to sekunder etter at spilleren går tom for skudd, starte spillet ved å påkalle LoadLevel   Det er på tide å teste spillet. Trykk  Kommando-P   Når du er fornøyd med spillet, er det tid for å velge  Bygg Settings   Innstillingene er søknad og inkluderer skaperen eller selskap, søknad oppløsning og visningsmodus, gjengivelsesmodus, enhetskompatibilitet, etc. Innstillingene vil variere avhengig av plattform og enheter søknaden din er målrettet og også holde kravene til butikken du publiserer på i tankene.   Bruke kunstverk du opprettet tidligere, kan du nå lage et fint ikon og en splash bilde for spillet ditt. Unity viser deg de nødvendige størrelser, som er avhengig av plattformen du bygger på.     Når prosjektet er riktig konfigurert, er det på tide å revidere  Bygg Innstillinger Kjøpe og klikk på  bygge   I denne opplæringen, har vi lært om 3D-modeller, mesh colliders, fysikk materialer, dueller, og andre aspekter av Unity spillutvikling. Jeg oppfordrer deg til å eksperimentere med resultatet og tilpasse spillet for å gjøre den til din egen. Jeg håper du likte denne opplæringen, og fant den nyttig.
 
 
 funksjon under  Verktøy 
 menyen i OS X  Forhåndsvisning 
 søknad. 
 
 
 5. Unity User Interface 
 
 knappen i  Scene 
 panel. Du kan også endre oppløsningen som blir vist i  Spill 
 panel. 
 
 
 6. Spill Interface 
 
 
 
 7. Programming Language 
 
,  UnityScript 
, en variant av Javascript, og  Boo 
. Hver programmeringsspråk har sine fordeler og ulemper, og det er opp til deg å bestemme hvilken du foretrekker. Min personlige preferanse går til programmeringsspråket C #, så det er det språket jeg skal bruke i denne opplæringen. 
 
 
 
 8. Lydeffekter 
 
 
 
 9. 3D-modeller 
 
 
 
 
 fra  Fil 
 menyen og velg  Collada (* .dae) 
 fra listen over alternativer. 
 
. En fil og en mappe for 3D-modellen vil bli opprettet. Filen inneholder 3D-objektet data og mappen teksturer som brukes av modellen. Du kan nå importere modellen i Unity som forklart i neste trinn. 
 
 
 10. Import Eiendeler 
 
 
 fra  Eiendeler 
 menyen 
 
 Legg elementene til eiendeler mappe for prosjektet. 
 
 Dra og slipp eiendeler i prosjektvinduet. 
 
 mappen i  Prosjekt 
 panel. 
 
 
 11. Opprett Scene 
 
 eller  Scene 
 panel. 
 
 
 12. 2D Bakgrunns 
 
 panel. Det vises automatisk i  Scene 
 panel. Juster  Transform 
 verdier i  Inspector 
 som vist i neste skjermbilde. 
 
 
 13. Hoop 
 
 panelet til  Scene Hotell og endre sine  Transform 
 egenskaper som vist i skjermbildet under. 
 
 
 14. Lys 
 
 til vår scene. Gå til  GameObject > Opprett Andre Hotell og velg  Retnings Lys 
. Dette vil skape et objekt som vil produsere en lysstråle. Endre  Transform 
 verdier som vist i neste skjermbilde slik at det lyser opp basketballkurv. 
 
 
 15. Hoop Collider 
 
 
 på  Inspector 
 panel, velg  Fysikk > Box Collider 
, og endre dens verdier som vist i neste skjermbilde. 
 
 panel representerer boksen Collider vi bare tilsatt. 
 
 
 16. Bounce fysikk Material 
 
 
 fra  Eiendeler 
 menyen  
 du burde se den vises i  Eiendeler 
 panel. Jeg endret navnet til  BounceMaterial 
. 
 
 panel for å matche de i dette skjermbildet under. 
 
 tekst, bør et vindu der du kan velge  
 fysikk materiale. 
 
 
 17. Basket Collider 
 
 
 
 boksen for å markere det som en trigger Collider. 
 
 
 18. Ring Mesh Collider 
 
. 
 
 tillater oss å bruke formen på 3D-objekt som en Collider. Som dokumentasjon fastslår Mesh Collider bygger sin kollisjon representasjon fra mesh festet til GameObject. 
 
 panel, klikk på trekanten på sin venstre for å utvide sitt hierarki Utvid  group_17 
, og velg elementet navnet  Ring 
. 
 
. Unity vil da oppdage automatisk formen på modellen og lage en Collider for det. 
 
 
 19. Hoop Sound 
 
 eller  Scene 
 visning, klikker du på  Legg til Component 
 knappen i  Inspector 
 panelet, og velg  Audio Source 
 i  Audio 
 delen. 
 
 
 
 20. Ball 
 
 senere. 
 
 for å være presis. Velg ballen i scenen, åpner  Inspector 
 panelet, og klikk  Legg til Component 
. Fra listen over komponenter, velger du  Sphere Collider 
 fra  Fysikk 
 delen og oppdatere sine egenskaper som vist nedenfor. 
 
 
 21. Ball RigidBody 
 
 komponent knyttet til den. For å legge til én til ballen, velg  Legg til Component 
 i  Inspector 
 panelet, og velg  Fysikk 
 >  RigidBody 
. 
 
 panelet til  Eiendeler 
 panelet for å konvertere den til en < b> Prefab 
. 
 
 
 22. Hoop Sprite 
 
 
 
 23. Score Text 
 
 å opprette et tekstobjekt, legg den på bunnen av basketballkurv, og endre teksten i  Hierarki 
 panelet til  0 
. 
 
 eiendom av teksten i  Inspector 
. 
 
 24 . Force Meter 
 
 panelet til  Scene Hotell og plassere dem som vist i skjermbildet nedenfor. 
 
 
 25. Ball Sprite 
 
 
 
 26. Basket Script 
 
 
  Legg til Component-knappen i < b> Inspector 
 panel. Velg  New Script Hotell og navn det Basket. Ikke glem å endre språket til C #. Åpne den nyopprettede filen og legge inn følgende kode 
 hjelp UnityEngine, bruker System.Collections; public class Basket. MonoBehaviour {public GameObject poengsum; //referanse til ScoreText gameobject, satt i editor offentlig AudioClip kurv; //henvisning til kurven høres void OnCollisionEnter () //hvis ballen treffer styret {audio.Play (); //spiller treffet styret lyden} void OnTriggerEnter () //hvis ballen treffer kurven Collider {int currentScore = int.Parse (score.GetComponent () tekst.) + 1; //legger en av partituret score.GetComponent () text = currentScore.ToString (.); AudioSource.PlayClipAtPoint (kurv, transform.position); //spille basket lyd}} 
. Gå tilbake til redaktøren og klikk den lille prikken på høyre side av variablene for å velge de verdiene som er beskrevet i kommentarfeltet. 
 
 spillet objekt til et nummer, slik at vi kan øke poengsummen og så sette den igjen som tekst ved hjelp av toString. På slutten, vi spiller kurven lyd. 
 
 27. Skyt Script 
 
 
 knappen i  Inspektør 
 panel. Velg  New Script Hotell og navn det Shoot. 
 
 28. Variabler 
 
 hjelp UnityEngine, bruker System.Collections; public class Shoot. MonoBehaviour {public GameObject ball; //referanse til ballen ferdighus, satt i editor privat Vector3 throwSpeed = new Vector3 (0, 26, 40); //Denne verdien er en sikker kurv, vil vi endre dette ved hjelp av forcemeter offentlig Vector3 ballPos; //starter ball posisjon privat bool kastet = false; //hvis ballen er kastet, forhindrer 2 eller flere baller privat GameObject ballClone; //vi ikke bruke den originale prefab offentlig GameObject availableShotsGO; //ScoreText spillet objekt referanse private int availableShots = 5; offentlig GameObject meter; //referanser til styrken meter offentlig GameObject pilen; privat float arrowSpeed = 0.3f; //Vanskelighetsgrad, høyere verdi = raskere pil bevegelsen privat bool høyre = true; //brukes til revers arrow bevegelsen offentlig GameObject Game; //game over tekst 
 
 29. Øk Gravity 
 
 Annullere Start () {/* Øke Gravity * /Physics.gravity = ny Vector3 (0, -20, 0);} 
 
 30. Force Meter Behavior 
 
 
 annullere FixedUpdate () {/* Flytt Meter Arrow * /if (arrow.transform.position.x < 4.7f & & høyre) {arrow.transform.position + = new Vector3 (arrowSpeed, 0, 0); } If (arrow.transform.position.x > = 4.7f) {høyre = false; } If (høyre == false) {arrow.transform.position - = new Vector3 (arrowSpeed, 0, 0); } If (arrow.transform.position.x < = -4.7f) {høyre = true; } 
 31. Skyt Ball 
 
 
 32. Fjern Ball 
 
 
 33. Sjekk Tilgjengelig Shots 
 
 34. . start 
 
 void start () {Application.LoadLevel (Application.loadedLevel); }} 
 
 35. Testing 
 
 å spille spillet i Unity. Hvis alt fungerer som forventet, da er du klar for de siste trinnene. 
 
 
 36. Player Settings 
 
 fra  Fil 
 menyen og klikk på  Player Settings Anmeldelser knapp. Dette bør få opp  Player Settings 
 i  Inspector 
 panel der du kan stille inn parametrene for din søknad. 
 
 
 < h2> 37. Ikoner og Splash Images 
 
 38. Bygg og Spill 
 
 
 Button. Det er alt det tar å bygge spillet for testing og /eller distribusjon. 
 
 Konklusjon 
 

