Lag en Fruit Ninja inspirert spill med Unity

Create en Fruit Ninja inspirert spill med Unity
67
Del
5
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 å kutte frukten som vises på scenen ved hjelp av berøringsskjermen

Du vil lære om følgende aspekter av Unity spillutvikling i denne opplæringen.

  • importere 3D-modeller

    swipe bevegelser

    linje gjengi

    fysikk krefter

    2D sprites

    Brukergrensesnittet av spillet er grei. Skjermbildet nedenfor gir deg en idé om kunstverket vi skal bruke, og hvordan den endelige brukergrensesnittet vil ende opp som ser. Du kan finne illustrasjoner og tilleggsressurser i opplæringen sin kildefilene på GitHub.

    1. Prosjektet Setup

    Trinn 1: Opprette en ny 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

    Trinn 2: Konfigurer Build Innstillinger

    I neste trinn, du presentert med Unity brukergrensesnitt. Sette prosjektet opp for mobil utvikling ved å velge Bygg Settings
    fra Fil
    menyen og velge din foretrukne plattformen

    Trinn 3:. Artwork

    Det første vi må gjøre etter å ha valgt målet plattformen er å velge størrelsen på grafikken vi skal bruke i spillet. Dette vil hjelpe oss med å velge en passende størrelse for 3D-teksturer og GUI 2D uten å gjøre kunstverket uskarpt eller bruke teksturer som er for store for målenheten. For eksempel trenger kunstverket til å ha en høyere oppløsning hvis du målretter en iPad med en retina-skjerm enn en Lumia 520.

    iOS

    iPad uten Retina: 1024px x 768px

    iPad med Retina: 2048 piksler x 1536px

    3,5 "iPhone /iPod Touch uten Retina: 320px x 480px

    3,5" iPhone /iPod med Retina: 960 x x 640px

    4 "iPhone /iPod Touch: 1136px x 640px

    Android

    Fordi Android er en åpen plattform, det er et bredt spekter av enheter, skjermoppløsninger, og pikseltetthet . Et par av de mer vanlige de 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

    Windows Phone & Blackberry

    Blackberry Z10: 720px x 1280px, 355 ppi
    < li> Nokia Lumia 520: 400px x 800px, 233 ppi

    Nokia Lumia 1520: 1080px x 1920px, 367 ppi

    Merk at koden vi skal skrive i denne opplæringen kan være brukes til å målrette noen av plattformene

    Trinn 4:. Eksporten Graphics

    Avhengig av hvilke enheter du målretter, kan det hende du må konvertere grafikken til anbefalt størrelse og pikseltetthet. 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

    Trinn 5:. Konfigurer Unity s Brukergrensesnitt

    Før vi kommer i gang, sørg for 2D
    knappen i Scene
    panelet ikke er uthevet. Du kan også endre oppløsningen som blir vist i Spill
    panel.

    Du er deretter presentert med arbeidsområde paneler, som vi også bruker i denne opplæringen. Ta deg tid til å se på de viktigste grensesnittet paneler, for eksempel Scene
    , Spill
    , Hierarki
    , Prosjekt
    , Assets
    , og Inspector
    . Vi vil bruke dem ofte i denne opplæringen

    Trinn 6:. Programmeringsspråk

    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 .

    2. Ressurser

    Lydeffekter

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

    3D-modeller

    For å lage spillet, må vi først få et par 3D-modeller. Jeg anbefaler 3docean for høy kvalitet modeller og teksturer, men hvis du tester eller læring, deretter gratis modeller vil fungere like fint. Modellene i denne opplæringen ble lastet ned fra SketchUp 3D-galleriet der du kan finne et bredt utvalg av 3D-modeller.

    Fordi Unity ikke gjenkjenner SketchUp filformat, trenger vi å konvertere den til noe Unity kan importere. Vi må først laste ned gratis versjon av SketchUp, som kalles SketchUp Make

    Åpne 3D-modell i SketchUp Lag, velg Export >.; 3D Model
    fra Fil
    menyen, og velg Collada (* .dae)
    . Velg et navn og sted, og klikk Lagre
    . Dette vil opprette en fil og en mappe for 3D-modellen. Filen inneholder data for 3D-objektet mens mappen inneholder modellens teksturer. I neste trinn, vil vi importere modellen i Unity.

    3. Import Eiendeler

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

    Velg Import New Asset
    fra Eiendeler
    menyen

    dra og slippe eiendeler i prosjektvinduet

    legge til elementer i prosjektet eiendeler mappe

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

    4. Sette opp Kamera & Lighting
    Trinn 1: Sette opp kameraet

    I dette trinnet, vi plassere hovedkameraet til å skape den utsikten vi ønsker. Velg hovedkameraet fra Hierarki
    panel og justere Transform
    verdier i Inspektør
    å matche de som er vist nedenfor.

    Ikke bekymre deg hvis du ikke ser noen endringer. Vi har ikke skapt noe for kameraet å se ennå
    Trinn 2:. Sette opp lys

    For våre objekter for å være synlig i 3D-verden, må vi legge lys til scene. Velg Opprett Andre
    fra GameObject
    meny og velg Retnings Lys
    . Dette vil skape et objekt som frembringer en stråle av lys. Endre Transform
    verdier som vist i følgende skjermbilde for å gjøre det belyse scenen.

    Lyset skal være synlig på scenen, som vist i følgende skjermbilde.

    5. Legg Bakgrunn

    Vi vil bruke en Sprite
    tekstur som vår bakgrunn. Som standard er bilder som er importert til mappe Eiendeler
    konvertert til Texture
    forekomster som kan brukes til 3D-objekter. Vi trenger å endre disse Texture
    forekomster til Sprite Texture
    instanser for bildet vi ønsker å bruke som bakgrunn.

    Velg bildet du ønsker å konvertere i < b> Eiendeler
    panel og åpne Inspector
    . Velg Sprite
    fra Texture Type
    menyen.

    Dra og slipp bakgrunnen inn i Hierarki
    panel. Det vises automatisk i Scene
    panel. Juster Transform
    verdier i Inspector
    som vist i neste skjermbilde.

    6. Opprett Score GUI

    For å vise spillets poengsum, vil vi bruke Unity GUI Tekst Hotell og en importert 3D-modell

    Trinn 1:. Legge til Apple Modellen

    Velg den importerte 3D-modell av ditt valg fra Eiendeler
    panel og dra og slipp den på Scene
    . Jeg kommer til å bruke et eple modell. Juster Transform
    verdier i Inspektør
    å matche de som er vist nedenfor.

    Dette vil plassere eplet øverst til venstre på skjermen.

    Trinn 2: Legge GUI Text

    Sammen med eple-modell, viser vi et tall som angir spillerens poengsum. Dette er antall frukter spilleren har kuttet

    Velg Opprett Andre >.; GUI Tekst
    fra GameObject
    menyen for å lage et tekstobjekt, plasser den på høyre side av eplet modell, og endre teksten i Inspector
    panelet til 0
    .

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

    7. Opprett Timer GUI

    Vi vil bruke en timer for å indikere når spillet er over. Det er sammensatt av en GUI Texture
    viser et ikon og en GUI Tekst
    viser gjenstående tid

    Trinn 1:. Legge på Klokke-ikonet

    Å legge klokkeikonet, velger du bildet du vil bruke i Eiendeler
    panel og åpne Inspector
    . Velg GUI
    fra Texture Type
    menyen for å konvertere den til en GUI Texture. Dra og slipp bildet til Scene Hotell og endre forvandle verdier til de som er vist nedenfor

    Scenen skal nå se slik ut

    Trinn 2:.. Legge til GUI Text

    Gjenta trinnene for å legge til stillingen teksten å legge timeren tekst. Ikke glem å sette tekst til riktig tid.

    8. Alert Prefab

    varsling er en GUI Texture
    at vi vil vise når nedtellingen når 0
    . Det vil vise en game over melding på midten av skjermen.

    For å opprette en våken, konvertere varsling bilde til en GUI Texture
    bruke Inspector
    . Dra den fra Hierarki
    panelet til Eiendeler
    panelet for å konvertere den til en Prefab
    .

    9. Timer Class

    La oss nå implementere Timer klasse. Velg Tid GUI Tekst
    , klikker du på Legg til Component
    knappen i Inspector
    panelet, og velg New Script
    . Navn skriptet Timer Hotell og ikke glem å endre språket til C #. Åpne den nyopprettede filen og følg de neste trinnene

    Trinn 1:.. Erklærer Variabler

    Vi starter med å lage en rekke variabler som vi vil bruke i Timer klassen
    privat GUIText timeTF; offentlig GameObject alertReference

    La oss ta en titt på hver av variablene

    timeTF: en referanse til klokke GUI Text

    alertReference: en referanse. til varsling prefab

    Vi vil bruke disse referansene for å få tilgang til de tids og varsling spill objekter og endre sine verdier. Angi varsel ferdighus i Inspector

    Trinn 2:. Setup

    Med variablene erklært, setter vi timeTF verdi ved å gå til guiText eiendom av nåværende spillet objektet . Dette vil la oss endre teksten verdien senere

    Vi har også ringe InvokeRepeating metode, som vil påberope ReduceTime metoden hvert sekund
    annullere Start () {timeTF = gameObject.guiText..; InvokeRepeating ("ReduceTime", 1, 1);}
    Trinn 3: Gjennomføre ReduceTime

    ReduceTime metoden er ansvarlig for å oppdatere timeren tekst og vise varselmeldingen. Spillet er over når den tid kommer 0
    . . Legg til følgende kode blokken til Timer klassen
    annullere ReduceTime () {if (timeTF.text == "1") {/* Alert * /Time.timeScale = 0; Instantiate (alertReference, ny Vector3 (0.5f, 0.5f, 0), transform.rotation); audio.Play (); . GameObject.Find ("AppleGUI") GetComponent < AudioSource > () Stopp (.); } TimeTF.text = (int.Parse (timeTF.text) - 1) .ToString ();}

    Vi starter med testing hvis tiden er i ferd med å ta slutt. Hvis det stemmer, vi pause spillet ved å endre tidsskalaen eiendommen til 0
    , opprette en forekomst av varselet, og spille spillet over lyden.

    Hvis tiden ikke er i ferd med å avslutte, vi bare redusere sin verdi etter 1
    . For å gjøre dette, bruker vi int.Parse metode for å konvertere tid strengen til et nummer, subtrahere 1
    , og kaller toString på den for å konvertere resultatet tilbake til en streng.

    Trinn 4: Last Metode

    Dette er den siste delen av Timer klassen. I Reload metoden, kaller vi LoadLevel på Application klasse og laste dagens nivå, nullstille alle objektene og variabel til opprinnelig tilstand
    annullere Reload () {Application.LoadLevel (Application.loadedLevel);}.

    Dette er hva hele klassen skal se ut når du er ferdig
    bruker UnityEngine, bruker System.Collections; public class Timer:. MonoBehaviour {private GUIText timeTF; offentlig GameObject alertReference; ugyldig Start () {timeTF = gameObject.guiText; InvokeRepeating ("ReduceTime", 1, 1); } Void ReduceTime () {if (timeTF.text == "1") {/* Alert * /Time.timeScale = 0; Instantiate (alertReference, ny Vector3 (0.5f, 0.5f, 0), transform.rotation); audio.Play (); . GameObject.Find ("AppleGUI") GetComponent < AudioSource > () Stopp (.); } TimeTF.text = (int.Parse (timeTF.text) - 1) .ToString (); } Void Reload () {Application.LoadLevel (Application.loadedLevel); }}
    10. Apple Prefab

    Apple er en av de viktigste elementene i spillet, og det er en av de interaktive objekter på skjermen. Spilleren er i stand til å bruke enhetens berøringsskjermen for å skjære eple, øke sin poengsum.

    Dra eple fra Eiendeler
    panelet til Scene
    . Ikke bekymre deg om sin posisjon, fordi vi vil konvertere den til en Prefab
    i et øyeblikk, og ta den ut av Hierarki

    Trinn 1:. Legg Rigidbody

    For å oppdage en kollisjon med eple, må vi legge til en Rigidbody
    til det. For å legge til en, velger du Legg til Component
    fra Inspector
    panel og velg Fysikk > Rigidbody
    . Du kan la innstillingene på standardverdiene

    Trinn 2:. Legg Box Collider

    Vi må også legge til en boks Collider til eple å oppdage kollisjoner. Dette Collider vil definere Apples hit området. Klikk på Legg til Component
    knappen i Inspector
    panel, velger du Fysikk > Box Collider
    , og endre dens verdier som vist i skjermbildet nedenfor.

    Scene
    panel, en grønn boks skal vises rundt eple, som representerer den boksen Collider vi nettopp lagt .

    11. Splash Prefab

    splash ferdighus vil bli brukt som en visuell effekt for når frukten er oppskåret av spilleren. Det vil dukke opp på scenen for hver frukt spilleren kutt og forsvinner sakte over tid. Konvertere bildet til en Sprite
    som beskrevet tidligere, og legge den til Scene
    .

    Legg et manus til den, og dra den tilbake til Eiendeler
    panelet for å opprette en Prefab
    . Åpne den nyopprettede klassen.

    12. Splash Class

    Splash klassen håndterer bildene skapes når frukten er oppskåret

    Trinn 1:. Erklærer Variabler

    Disse variablene er brukt til å beregne og sette en alpha verdien til splash ferdighus. Ved å endre sin alpha eiendommen kan vi visne ferdighus som tiden går
    privat Color randomAlpha; privat float currentAlpha;
    Trinn 2:. Setup

    I denne metoden beregner vi en tilfeldig alpha verdi fra 0,3
    til 0,5 Hotell og lagre verdien i randomAlpha variabel. Vi deretter sette den resulterende alfa til fargen eiendom av spillet objektet.

    I den siste linjen med kode påberope vi den metoden som vil redusere denne verdien hvert 300
    millisekunder, noe som skaper en fading effekt .
    void Start () {randomAlpha = ny farge (1, 1, 1, Random.Range (0.3f, 0.5f)); gameObject.renderer.material.color = randomAlpha; InvokeRepeating ("ReduceAlpha", 0.3f, 0.3f);}
    Trinn 3: Redusere Alpha and Destroy

    For å redusere alfa, må vi først få den nåværende verdi. De currentAlpha variable lagrer denne verdien. Deretter trekke vi 0,1
    fra denne verdien og tilordne den nye alpha til spillet objektet. Bildet fjernes når det er nesten usynlig
    annullere ReduceAlpha () {currentAlpha = gameObject.renderer.material.color.a.; if (gameObject.renderer.material.color.a < = 0,1f) {Destroy (gameObject); } Else {gameObject.renderer.material.color = ny farge (1, 1, 1, currentAlpha - 0,1f); }}

    Dette er hva Splash klassen ser ut
    hjelp UnityEngine, bruker System.Collections; public class Splash. MonoBehaviour {private Color randomAlpha; private float currentAlpha; ugyldig Start () {randomAlpha = ny farge (1, 1, 1, Random.Range (0.3f, 0.5f)); gameObject.renderer.material.color = randomAlpha; InvokeRepeating ("ReduceAlpha", 0.3f, 0.3f); } Void ReduceAlpha () {currentAlpha = gameObject.renderer.material.color.a; if (gameObject.renderer.material.color.a < = 0,1f) {Destroy (gameObject); } Else {gameObject.renderer.material.color = ny farge (1, 1, 1, currentAlpha - 0,1f); }}}
    13. Apple Class

    Med vår splash ferdighus laget, vi kan nå fortsette med Apple klassen. Denne klassen vil håndtere handlinger, for eksempel dueller, oppdatering av score, og fjerne eple fra scenen

    Trinn 1:. Erklærer Variabler

    Tre variabler deklareres i Apple-klasse: < .no>
    splashReference: referanse til splash prefab

    randomPos: posisjon for sprut prefab

    scoreReference: referanse til stillingen GUI tekst product: [SerializeField ] private GameObject splashReference; privat Vector3 randomPos = new Vector3 (Random.Range (-1, 1), Random.Range (0.3f, 0.7f), Random.Range (-6.5f, -7.5f)); privat GUIText scoreReference;
    Trinn 2: Få Score Reference

    For å få en henvisning til den stillingen teksten vi bruke Finn metoden. Denne metoden søker de aktive spillobjektene og returnerer objektet vi leter etter, poengsummen GUI Tekst
    i dette tilfellet.
    Annullere Start () {scoreReference = GameObject.Find ("Resultat"). guiText;}

    Med scoreReference variable sett, er vi nå i stand til å øke sin verdi når en frukt er skiver

    Trinn 3: ødelegge Når Offstage

    I Update. metode, sjekker vi om frukt er ikke lenger synlig på skjermen ved å gå sin y posisjon og fjerne den hvis sant. . Dette hjelper oss slippe minne ved å ødelegge ubrukte spillobjektene
    annullere Update () {/* Fjern frukt hvis ut av syne * /if (gameObject.transform.position.y < -36) {Destroy (gameObject); }}
    Trinn 4: Handle Kollisjoner

    Den neste koden bruker OnCollisionEnter metoden for å oppdage når frukten er oppskåret av spilleren. Når dette skjer, vi spiller kuttet lyden og fjerne frukten. Deretter oppretter vi en ny forekomst av splash prefab og oppdatere poengsum
    annullere OnCollisionEnter (Collision andre) {if (other.gameObject.name == "Line") {Camera.main.GetComponent. ≪ AudioSource > () .Spille(); Ødelegge (gameObject); Instantiate (splashReference, randomPos, transform.rotation); /* Oppdater Score * /scoreReference.text = (int.Parse (scoreReference.text) + 1) .ToString (); }}

    Dette er hva hele Apple klassen ser ut
    hjelp UnityEngine, bruker System.Collections; public class Apple. MonoBehaviour {[SerializeField] private GameObject splashReference; privat Vector3 randomPos = new Vector3 (Random.Range (-1, 1), Random.Range (0.3f, 0.7f), Random.Range (-6.5f, -7.5f)); private GUIText scoreReference; ugyldig Start () {scoreReference = GameObject.Find ("Resultat") guiText.; } Void Update () {/* Fjern frukt hvis ut av syne * /if (gameObject.transform.position.y < -36) {Destroy (gameObject); }} Void OnCollisionEnter (Collision andre) {if (other.gameObject.name == "Line") {Camera.main.GetComponent < AudioSource >. () Spill (); Ødelegge (gameObject); Instantiate (splashReference, randomPos, transform.rotation); /* Oppdater Score * /scoreReference.text = (int.Parse (scoreReference.text) + 1) .ToString (); }}}
    14. FruitSpawner Class

    FruitSpawner klasse instantiates og flytter fruktene til scenen. Det er festet til hovedkameraet

    Trinn 1:.. Erklærer Variabler

    Dette er variabler deklarert i denne klassen
    [SerializeField] private GameObject appleReference; privat Vector3 throwForce = new Vector3 (0, 18, 0);

    appleReference: referanse til apple prefab

    throwForce: kraften brukes til å presse frukt oppover

    Trinn 2: Invoke spawn

    I de neste linjer med kode, kaller vi den InvokeRepeating metode for å påberope seg SpawnFruit metoden hvert sjette sekund. Dette vil legge nye frukter til scenen hvert sjette sekund, som gir spilleren tid til å skjære dem før frukten faller til bunnen av scenen
    ugyldig Start () {InvokeRepeating ("SpawnFruit", 0.5f, 6).; }
    Trinn 3: SpawnFruit Metode

    SpawnFruit metoden skaper fruktene og presser dem oppover for spilleren å kutte. Vi bruker en for uttalelse på å bruke fruktene, plassere dem tilfeldig på scenen og bruke en fysikk kraft ved hjelp av addForce metoden
    annullere SpawnFruit () {for (byte i = 0; i < 4; i ++). {GameObject frukt = instantiate (appleReference, ny Vector3 (Random.Range (10, 30), Random.Range (-25, -35), -32), Quaternion.identity) som GameObject; fruit.rigidbody.AddForce (throwForce, ForceMode.Impulse); }}

    Dette er den komplette FruitSpawner klassen
    hjelp UnityEngine, bruker System.Collections; public class FruitSpawner. MonoBehaviour {[SerializeField] private GameObject appleReference; privat Vector3 throwForce = new Vector3 (0, 18, 0); void Start () {InvokeRepeating ("SpawnFruit", 0.5f, 6); } Void SpawnFruit () {for (byte i = 0; i < 4; i ++) {GameObject frukt = instantiate (appleReference, ny Vector3 (Random.Range (10, 30), Random.Range (-25, -35) , -32), Quaternion.identity) som GameObject; fruit.rigidbody.AddForce (throwForce, ForceMode.Impulse); }}}
    15. Berøringskontroller

    La oss nå implementere berøringskontrollene. Spilleren vil være i stand til å bruke berøringsskjermen for å kutte frukt. Vi vil synliggjøre dette ved å tegne en linje ved hjelp av LineRenderer klassen og deretter sjekke om frukten kolliderer med spillerens swipe gest

    Trinn 1:. Erklærer Variabler

    Vi starter med å lage noen variabler.

    c1, c2: disse variablene sette farge på linjen

    lineGO: dette spillet objektet vil holde linjen renderer

    lineRenderer: linjen renderer eksempel

    i: en int verdi brukes til å angi størrelse og indeks over linjen
    offentlig Color c1 = Color.yellow; offentlig Color c2 = Color.red; privat GameObject lineGO; privat LineRenderer lineRenderer; private int i = 0;
    Trinn 2: Oppsett

    I Start-metoden, har vi satt opp de nødvendige gjenstander og egenskaper for linjen. Vi begynner med å lage en ny GameObject eksempel inneholder LineRenderer. Deretter bruker vi noen av linjen renderer metoder for å angi hvordan det kommer til å se
    annullere Start () {lineGO = new GameObject ("Line").; lineGO.AddComponent < LineRenderer > (); lineRenderer = lineGO.GetComponent < LineRenderer > (); lineRenderer.material = new Material (Shader.Find ("Mobile /Partikler /Additiv")); lineRenderer.SetColors (c1, c2); lineRenderer.SetWidth (0.3F, 0); lineRenderer.SetVertexCount (0);}

    De fleste eiendommer som ligger i denne blokken med kode er enkle å forstå, SetColor endrer fargen på linjen og SetWidth setter sin bredde. Vær spesielt oppmerksom på SetVertexCount linje. Denne metoden angir antall poeng av linjen. Ved å kalle denne fremgangsmåte med et høyere antall punkter, kan vi øke størrelsen av linjen. Dette vil bli klarere i neste trinn

    Trinn 3:. Lag Linje

    Linjen er skapt i Update metoden. Vi først teste om spilleren er å berøre skjermen ved å hente den touchCount eiendommen av Input klassen. Dersom eiendommen er større for at 0
    , betyr det at det er minst en finger på enhetens skjerm.

    Vi holder en referanse til Touch gjenstand for enklere tilgang og sjekke hvilken fase det er i dag i. Vi trenger det for å være i Flyttet fase for å kunne opprette linjen.

    Hvis spilleren beveger fingeren over skjermen, kan vi begynne å lage et linjestykke på den posisjonen. . Vi påkalle SetVertexCount metoden igjen for å øke det maksimale antall segmenter av linjen
    void Update () {if (Input.touchCount > 0) {Touch berørings = Input.GetTouch (0); if (touch.phase == TouchPhase.Moved) {lineRenderer.SetVertexCount (i + 1); Vector3 mPosition = new Vector3 (Input.mousePosition.x, Input.mousePosition.y, 15); lineRenderer.SetPosition (i, Camera.main.ScreenToWorldPoint (mPosition)); i ++; }}}
    Trinn 4: Legg colliders

    Med linjen på plass, legger vi en Collider til det å hjelpe oss med å finne en kollisjon med noen av fruktene. Følgende kodebit skaper og legger en boks Collider til linjen ved hjelp av AddComponent metode og setter sin posisjon til lineRenderer nåværende posisjon. Den siste linjen med kode endrer standardstørrelsen på Collider å matche linje størrelse
    BoxCollider bc = lineGO.AddComponent. ≪ BoxCollider > (); bc.transform.position = lineRenderer.transform.position; bc.size = new Vector3 (0,1f, 0,1f, 0,1f);
    Trinn 5: Ta Linje

    Vi fjerner linjen når spilleren er ikke lenger berøre skjermen. Dette forhindrer eventuelle uønskede kollisjoner med eplene.

    I neste kodebiten, sjekker vi om den nåværende fasen av Touch objektet er avsluttet og satt toppunktet telling av lineRenderer til 0
    . Dette vil fjerne dagens linjesegmenter, men det ødelegger ikke objektet, slik at vi kan bruke det senere. Vi tilbakestiller også i variable for å tillate senere bruk
    if (touch.phase == TouchPhase.Ended) {/* fjern linje * /lineRenderer.SetVertexCount (0).; i = 0;}
    Trinn 6: Destroy colliders

    Når linjen er fjernet, vi trenger ikke lenger straffe colliders knyttet til den. Vi først opprette en rekke BoxCollider gjenstander, lagring seksten colliders av linjen spillet objektet. Vi så løkken over rekken, ødelegge hver boks Collider Twitter /* Fjern Linje colliders * /BoxCollider [] lineColliders = lineGO.GetComponents. ≪ BoxCollider > (); foreach (BoxCollider bi lineColliders) {Destroy (b);}

    La oss ta en titt på den fullstendige gjennomføringen av LinesHandler klassen
    hjelp UnityEngine, bruker System.Collections; public class LinesHandler. MonoBehaviour {public Color c1 = Color.yellow; offentlig Color c2 = Color.red; private GameObject lineGO; private LineRenderer lineRenderer; private int i = 0; void Start () {lineGO = new GameObject ("Line"); lineGO.AddComponent < LineRenderer > (); lineRenderer = lineGO.GetComponent < LineRenderer > (); lineRenderer.material = new Material (Shader.Find ("Mobile /Partikler /Additiv")); lineRenderer.SetColors (c1, c2); lineRenderer.SetWidth (0.3F, 0); lineRenderer.SetVertexCount (0); } Void Update () {if (Input.touchCount > 0) {Touch berørings = Input.GetTouch (0); if (touch.phase == TouchPhase.Moved) {lineRenderer.SetVertexCount (i + 1); Vector3 mPosition = new Vector3 (Input.mousePosition.x, Input.mousePosition.y, 15); lineRenderer.SetPosition (i, Camera.main.ScreenToWorldPoint (mPosition)); i ++; /* Legg Collider * /BoxCollider bc = lineGO.AddComponent < BoxCollider > (); bc.transform.position = lineRenderer.transform.position; bc.size = new Vector3 (0,1f, 0,1f, 0,1f); } If (touch.phase == TouchPhase.Ended) {/* Fjern Linje * /lineRenderer.SetVertexCount (0); i = 0; /* Fjern Linje colliders * /BoxCollider [] lineColliders = lineGO.GetComponents < BoxCollider > (); foreach (BoxCollider bi lineColliders) {Destroy (b); }}}}}
    16. Endelige Steps

    Trinn 1: 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

    Trinn 2:. Player Settings

    Når du er fornøyd med spillet, er det tid for å velge Bygg Innstillinger
    fra Fil
    menyen og klikk på Player Settings
    knappen. Dette bør få opp Player Settings
    i Inspector
    panel der du kan stille inn parametrene for din søknad.

    Disse innstillingene er programspesifikke data som inkluderer skaperen eller Selskapet, app oppløsning og visningsmodus, gjengivelsesmodus (CPU, GPU), enhets OS kompatibilitet, etc. Konfigurer innstillingene i henhold til de enhetene du målretter og butikken eller marked hvor du har tenkt å publisere app.
    < h3> Trinn 3: Ikoner og Splash Images

    Ved hjelp av grafikken 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 for

    Trinn 4:. Build and Play

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



    Konklusjon

    I denne opplæringen, vi har lært hvordan de skal bruke berøringskontroller, fysikk krefter, GUI Tekstur og andre aspekter av spillet utvikling i Unity. 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.