Lag en Basketball frikast Spill med Unity

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 ...
funksjon under Verktøy
menyen i OS X Forhåndsvisning
søknad.



5. Unity User Interface

Før vi kommer i gang, sørg for å klikke på 3D
knappen i Scene
panel. Du kan også endre oppløsningen som blir vist i Spill
panel.



6. Spill Interface

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.



7. Programming Language

Du kan bruke en av tre programmeringsspråk når du bruker Unity, C #
, 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.

Hvis du velger å bruke et annet programmeringsspråk, så sørg for å ta en titt på Unity sin Script Reference for eksempler .



8. Lydeffekter

Jeg skal bruke en rekke lyder å forbedre audial opplevelsen av spillet. Lydeffektene er brukt i denne opplæringen ble hentet fra as3sfxr og Soungle.



9. 3D-modeller

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
fra Fil
menyen og velg Collada (* .dae)
fra listen over alternativer.

Velg et navn, velg en katalog, og Klikk på Eksporter
. 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

Før vi begynner koding, må vi legge våre eiendeler til Unity prosjektet. Du kan gjøre dette én av flere måter.

  • Velg Import New Asset
    fra Eiendeler
    menyen

    Legg elementene til eiendeler mappe for prosjektet.

    Dra og slipp eiendeler i prosjektvinduet.

    Etter å ha fullført dette trinnet, bør du se verdiene i prosjektets Eiendeler
    mappen i Prosjekt
    panel.



    11. Opprett Scene

    Vi er klar til å lage scene av spillet vårt ved å dra objekter til Hierarki
    eller Scene
    panel.



    12. 2D Bakgrunns

    Start ved å dra og slippe bakgrunnen inn i Hierarki
    panel. Det vises automatisk i Scene
    panel. Juster Transform
    verdier i Inspector
    som vist i neste skjermbilde.



    13. Hoop

    Målet med spillet er å kaste ballen gjennom bøylen. Dra den fra Eiendeler
    panelet til Scene Hotell og endre sine Transform
    egenskaper som vist i skjermbildet under.



    14. Lys

    Som du kanskje har lagt merke til, er det basketball hoop litt for mørkt. For å fikse dette, må vi legge til en 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

    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
    Inspector
    panel, velg Fysikk > Box Collider
    , og endre dens verdier som vist i neste skjermbilde.

    Du vil se en grønn ramme rundt basketballkurven i Scene
    panel representerer boksen Collider vi bare tilsatt.



    16. Bounce fysikk Material

    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
    fra Eiendeler
    menyen
    du burde se den vises i Eiendeler
    panel. Jeg endret navnet til BounceMaterial
    .

    Endre sine egenskaper i Inspector
    panel for å matche de i dette skjermbildet under.

    Deretter velger boksen Collider av basketballkurv og klikk på den lille prikken til høyre for Material
    tekst, bør et vindu der du kan velge
    fysikk materiale.



    17. Basket Collider

    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
    boksen for å markere det som en trigger Collider.



    18. Ring Mesh Collider

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

    Velg rammen fra Hierarki
    panel, klikk på trekanten på sin venstre for å utvide sitt hierarki Utvid group_17
    , og velg elementet navnet Ring
    .

    Legg til en Collider som vi så i trinn 15, men sørg for å velge Mesh Collider
    . Unity vil da oppdage automatisk formen på modellen og lage en Collider for det.



    19. Hoop Sound

    Hvis du vil spille av en lyd når ballen treffer bøyle, trenger vi først å feste den. Velg det fra Hierarki
    eller Scene
    visning, klikker du på Legg til Component
    knappen i Inspector
    panelet, og velg Audio Source
    i Audio
    delen.

    kryssene Spill på Awake Hotell og klikk den lille prikken på høyre side, under tannhjulikonet, for å velge lyden du vil å spille.



    20. Ball

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

    For å få ballen oppdage når den treffer bøyle, må vi legge til en komponent, en Sphere Collider
    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

    For å oppdage en kollisjon med basketball, minst en av de kolliderende objektene må ha en RigidBody
    komponent knyttet til den. For å legge til én til ballen, velg Legg til Component
    i Inspector
    panelet, og velg Fysikk
    > RigidBody
    .

    La innstillingene på standardverdier og dra ballen fra Hierarki
    panelet til Eiendeler
    panelet for å konvertere den til en < b> Prefab
    .



    22. Hoop Sprite

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



    23. Score Text

    Under 2D bøyle, viser vi antall kurver spilleren har scoret så langt. Velg GameObject > Opprett Andre > GUI Tekst
    å opprette et tekstobjekt, legg den på bunnen av basketballkurv, og endre teksten i Hierarki
    panelet til 0
    .

    Du kan bygge en tilpasset skrift ved å importere den i mappe Eiendeler Kjøpe og endre Font
    eiendom av teksten i Inspector
    .

    24 . Force Meter

    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
    panelet til Scene Hotell og plassere dem som vist i skjermbildet nedenfor.



    25. Ball Sprite

    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.



    26. Basket Script

    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
    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}}

    I dette skriptet, setter vi to offentlige variabler som representerer objekter på Scene Hotell og i mappe Eiendeler
    . 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.

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

    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
    knappen i Inspektør
    panel. Velg New Script Hotell og navn det Shoot.

    28. Variabler

    I neste kodebiten, jeg har listet opp de variablene som vi vil bruke. Les kommentarene i kodebiten for avklaring
    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

    Deretter oppretter vi Start-metode der satt vi tyngdekraften til -20 for å få ballen fallet raskere.
    Annullere Start () {/* Øke Gravity * /Physics.gravity = ny Vector3 (0, -20, 0);}



    30. Force Meter Behavior

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

    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}



    32. Fjern Ball

    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



    33. Sjekk Tilgjengelig Shots

    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); }}}
    34. . start

    restart metoden går to sekunder etter at spilleren går tom for skudd, starte spillet ved å påkalle LoadLevel
    void start () {Application.LoadLevel (Application.loadedLevel); }}



    35. Testing

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



    36. Player Settings

    Når du er fornøyd med spillet, er det tid for å velge Bygg 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.

    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.


    < h2> 37. Ikoner og Splash Images

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

    38. Bygg og Spill


    Når prosjektet er riktig konfigurert, er det på tide å revidere Bygg Innstillinger Kjøpe og klikk på bygge
    Button. Det er alt det tar å bygge spillet for testing og /eller distribusjon.

    Konklusjon

    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.