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