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