Ontwikkel een 3D Skee Ball Game met Unity

Wat je gaat creëren

Invoering

In deze tutorial leer je hoe je een mobiel 3D-spel maakt met C # en Unity. Het doel van het spel is om de bal met behulp van het touchscreen in de gaten te gooien.

In deze tutorial leer je over de volgende aspecten van Unity-game-ontwikkeling:

  • 3D-modellen importeren
  • veeg gebaar controles
  • klasse communicatie
  • natuurkundige krachten
  • trigger colliders

1. Maak een nieuw eenheidsproject

Open Unity en selecteer Nieuw project van de het dossier menu om het nieuwe projectdialoogvenster te openen. Vertel Unity waar u het project wilt opslaan en stel het inStandaardinstellingen instellen voor: menu naar 3D.

2. Bouw instellingen

In de volgende stap krijgt u de gebruikersinterface van Unity te zien. Stel het project in voor mobiele ontwikkeling door te kiezen Bouw instellingen van de het dossier menu en het selecteren van uw platform naar keuze.

3. apparaten

Het eerste dat we moeten doen nadat we het doelplatform hebben geselecteerd, is het kiezen van de grootte van de illustraties die we in het spel zullen gebruiken. Dit zal ons helpen een juiste grootte voor de 3D-texturen en 2D GUI te selecteren zonder de illustratie wazig te maken of texturen te gebruiken die te groot zijn voor het doelapparaat. De illustratie moet bijvoorbeeld een hogere resolutie hebben als u een iPad target met een retina-display dan een Lumia 520.

iOS

  • iPad zonder Retina: 1024 px x 768 px
  • iPad met Retina: 2048 px x 1536 px
  • 3.5 "iPhone / iPod Touch zonder Retina: 320 px x 480 px
  • 3.5 "iPhone / iPod met Retina: 960 px x 640 px
  • 4 "iPhone / iPod Touch: 1136 px x 640 px

Android

Omdat Android een open platform is, is er een breed scala aan apparaten, schermresoluties en pixeldichtheid. Een paar van de meest voorkomende staan ​​hieronder vermeld.

  • Asus Nexus 7 Tablet: 800 px x 1280 px, 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
  • Nokia Lumia 520: 400 px x 800 px, 233 ppi
  • Nokia Lumia 1520: 1080px x 1920px, 367 ppi

Houd er rekening mee dat de code die we in deze zelfstudie schrijven, kan worden gebruikt om een ​​van de platforms te targeten.

4. Grafieken exporteren

Afhankelijk van de apparaten die u target, moet u de illustratie mogelijk converteren naar de aanbevolen grootte en pixeldichtheid. U kunt dit doen in uw favoriete foto-editor. Ik heb de Grootte aanpassen ...  functie onder de Hulpmiddelen menu in OS X's Voorbeeld toepassing.

5. Unity gebruikersinterface

Voordat we aan de slag gaan, zorgt u ervoor dat de 2D knop in de Tafereel paneel is niet gemarkeerd. U kunt ook de resolutie wijzigen die wordt weergegeven in de Spel paneel.

Vervolgens krijg je de werkruimtepanelen te zien die we ook in deze zelfstudie zullen gebruiken. Neem even de tijd om naar de belangrijkste interfacepanelen te kijken, zoals de Tafereel, Spel, Hiërarchie, project, Middelen, en Inspecteur. We zullen ze vaak gebruiken in deze tutorial.

6. Spelinterface

De gebruikersinterface van het spel is eenvoudig. De onderstaande schermafbeelding geeft u een idee van de illustraties die we gaan gebruiken en hoe de uiteindelijke gebruikersinterface eruit zal zien. Je vindt de illustraties en extra bronnen in de bronbestanden van de zelfstudie op GitHub.

7. Programmeertaal

U kunt een van de drie programmeertalen gebruiken wanneer u Unity gebruikt, C #UnityScript, een variatie van JavaScript, en boe. Elke programmeertaal heeft zijn voors en tegens, en het is aan jou om te beslissen welke je voorkeur heeft. Mijn persoonlijke voorkeur gaat naar de programmeertaal C #, dus dat is de taal die ik in deze zelfstudie zal gebruiken.

Als u besluit een andere programmeertaal te gebruiken, moet u de voorbeelden van Unity's Script Reference raadplegen.

8. Geluidseffecten

Ik zal een aantal geluiden gebruiken om de audiale ervaring van het spel te verbeteren. De geluidseffecten die in deze zelfstudie worden gebruikt, zijn verkregen van PlayOnLoop en Freesound.

9. 3D-modellen

Om het spel te maken, moeten we eerst een paar 3D-modellen kopen. Ik raad 3docean aan voor modellen en texturen van hoge kwaliteit, maar als je aan het testen of leren bent, zullen gratis modellen net zo goed werken. De modellen in deze zelfstudie zijn gedownload vanuit SketchUp 3D Warehouse, waar u een breed scala aan 3D-modellen kunt vinden.

Omdat Unity het SketchUp-bestandsformaat niet herkent, moeten we het converteren naar iets dat Unity kan importeren. We moeten eerst de gratis versie van SketchUp downloaden, genaamd SketchUp Make.

Open het 3D-model in SketchUp Make, selecteer Exporteren> 3D-model van de het dossier menu en kies Collada (* .dae). Kies een naam en locatie en klik op Opslaan. Hiermee wordt een bestand en een map voor het 3D-model gemaakt. Het bestand bevat de gegevens voor het 3D-object terwijl de map de texturen van het model bevat. In de volgende stap zullen we het model in Unity importeren.

10. Activa importeren

Voordat we beginnen met coderen, moeten we de items aan het Unity-project toevoegen. U kunt dit op verschillende manieren doen:

  • kiezen Nieuwe activa importeren van de Middelen menu
  • sleep de activa in het projectvenster
  • voeg de items toe aan de map met items van het project

Nadat u deze stap hebt voltooid, ziet u de items in uw project Middelen map in de project paneel.

11. Camera instellen

Voordat we verder gaan, laten we de hoofdcamera plaatsen om de gewenste weergave te maken. Selecteer de hoofdcamera van de Hiërarchie paneel en pas de Transformeren waarden in de Inspecteur om overeen te komen met degene die hieronder worden getoond.

Maak je geen zorgen als je geen wijzigingen ziet. We hebben nog niets gemaakt voor de camera om te zien.

12. Licht toevoegen

Om onze objecten zichtbaar te maken in de 3D-wereld, moeten we licht toevoegen aan de scène. kiezen Maak een ander van de GameObject menu en selecteer Directional Light. Hiermee wordt een object gemaakt dat een lichtstraal produceert. Verander zijn Transformeren waarden zoals weergegeven in de volgende schermafbeelding om het gebied te verlichten.

Het licht moet zichtbaar zijn op de scène zoals weergegeven in de volgende schermafbeelding.

13. Voeg Alley Bowlers toe

De bowlingspelers zijn de belangrijkste componenten van de scène van het spel. De speler zal het aanraakscherm gebruiken om een ​​bal te gooien, gericht op een van de gaten.

Het model dat in deze zelfstudie wordt gebruikt, is gedownload en geïmporteerd met de methode die wordt beschreven in Stap 9.

Ook al voegen we drie modellen toe aan de scène, het spel zal alleen interactie hebben met degene in het midden. Versleep een exemplaar van het model op de Tafereel of Hiërarchie paneel en verander zijn Transformeren waarden die worden weergegeven in de onderstaande schermafbeelding.

Gebruik dezelfde methode om de andere twee exemplaren toe te voegen of dupliceer de eerste instantie door op te drukken Command-D. Gebruik de Transformeer gereedschappen om ze te plaatsen zoals hieronder getoond.

14. Maak Colliders

Met de hoofdstraat op zijn plaats, is het tijd om botsers aan het model toe te voegen om ons te helpen de bal over het oppervlak te verplaatsen. Omdat dit een complex model is met veel groepen en polygonen, duurt het lang voordat we de verschillende vormen identificeren en een collider aan elk van hen toevoegen. Om deze stap gemakkelijker te maken, gebruiken we een script van derden om automatisch een collider te maken die bij ons model past.

Het script voegt een nieuw menu-item toe met de naam Wizards naar het Unity-menu. Selecteer het model waaraan u de collider wilt toevoegen en selecteer Mesh Colliders toevoegen van de Wizards menu. Dit zal het volgende venster openen.

Klik Colliders toevoegen rechtsonder om colliders aan het model toe te voegen. Dit zal een maken Mesh Collider voor elke groep of object van het model. U kunt dit verifiëren door het ballbowler model in de Hiërarchie en een item selecteren.

15. Spotlights

We hebben een lichtbron aan onze 3D-wereld toegevoegd, maar we hebben wat meer licht nodig om de scène interessanter te maken. Dit doen we door een aantal spots toe te voegen.

kiezen Maak een ander van de GameObject menu en selecteer Spotlight. Hiermee wordt een object gemaakt dat een lichtbundel naar één plek stuurt. De eerste schijnwerper die we toevoegen, moet de gaten verlichten. Verander zijn Transformeren waarden zoals weergegeven in de volgende schermafbeelding.

Voeg een tweede spotlight toe met behulp van de volgende transformatiewaarden.

16. Bal

De bal is het belangrijkste onderdeel van het spel. De speler gebruikt het touchscreen om de bal in een van de gaten te krijgen.

De bal wordt een simpele Gebied primitief. kiezen Maak anders> bol van de GameObject menu om de primitieve te maken en de Transformeren waarden in de Inspecteur zoals hieronder getoond.

We zullen de bal omzetten in een prefab later omdat het ons helpt om instanties in code te maken. Maar laten we eerst een toevoegen star lichaam ernaar toe.

17. Ball RigidBody

Om een ​​botsing met de bal te detecteren, moeten we een star lichaam ernaar toe. Selecteer om een ​​toe te voegen Component toevoegen van de Inspecteur paneel gevolgd door Fysica > star lichaam. U kunt de instellingen op hun standaardwaarden laten staan.

18. Kogelsensoren

We moeten detecteren wanneer de bal in een gat valt. We zullen gebruiken Colliders activeren Voor dit doeleinde. Een trigger-collider is een fysica-object dat een botsing met een ander object detecteert zonder fysiek te reageren. Dit helpt ons te detecteren wanneer de bal het gat ingaat zonder hem terug te laten stuiteren.

Omdat we hiervoor geen echt model of 2D-afbeelding nodig hebben, maken we een Leeg GameObject. kiezen GameObject> Maak leeg vanuit de menubalk om het te maken. Klik op de Component toevoegen knop in de Inspecteur en kies Natuurkunde> Box Collider.

Hiermee wordt een vak-collider aan het spelobject toegevoegd. Herhaal dit proces voor elke hole en controleer de Op gang brengen checkbox.

Plaats de colliders zoals weergegeven in de onderstaande schermafbeelding.

19. scorebord

Om het scorebord van de game weer te geven, gebruiken we Unity's GUI-texturen. Standaard worden afbeeldingen geïmporteerd naar de Middelen map worden geconverteerd naar structuur instanties die kunnen worden toegepast op 3D-objecten. We moeten deze veranderen structuur instances GUI-structuur exemplaren voor de afbeeldingen die we in de gebruikersinterface van het spel willen gebruiken.

Selecteer de afbeelding die u wilt converteren in de Middelen paneel en open de Inspecteur. kiezen GUI van de Textuurtype menu.

U kunt de afbeelding nu slepen en neerzetten naar de Tafereel. De afbeelding verschijnt altijd voor elk object op het werkgebied en wordt behandeld als een 2D-element.

20. Tekst scorebord

In het GUI-element van het scorebord tonen we getallen die de score van de speler aangeven en het aantal ballen dat de speler nog heeft.

kiezen Maak anders> GUI-tekst van de GameObject menu om een ​​tekstobject te maken, plaats het in het midden van het GUI-element en wijzig de tekst in het Hiërarchie paneel naar 00. Volg hetzelfde proces voor de ballentekst om het scorebord te voltooien.

21. Scripts toevoegen

Het is tijd om wat code te schrijven. Met de gebruikersinterface op zijn plaats, kunnen we beginnen met het schrijven van de nodige code om interactie aan het spel toe te voegen. We doen dit door middel van scripts, die aan game-objecten kunnen worden gekoppeld. Volg de volgende stappen om te leren hoe u interactie toevoegt aan het niveau dat we zojuist hebben gemaakt.

22. ThrowBall-klasse

Stap 1: Variabelen declareren

We beginnen met het maken van de klasse die de meeste spelmechanismen verwerkt. Selecteer de hoofdcamera, klik op de Component toevoegen knop in de Inspecteur paneel en kies Nieuw script. Geef het script een naam Gooibal en vergeet niet om de taal in C # te veranderen. Open het nieuw gemaakte bestand en voeg het volgende codefragment toe.

gebruikmakend van UnityEngine; met behulp van System.Collections; public class ThrowBall: MonoBehaviour private Vector3 throwSpeed ​​= new Vector3 (0, 0, 1100); openbare GameObject-ballReference; privé Vector2 startPos; privé Vector2 endPos; private Vector2 minDistance = new Vector2 (0, 100); private Vector3 ballPos = new Vector3 (0, 0.38f, -11.41f); public bool ballOnStage = false; openbare int ballsLeft = 5; openbare GUIText-ballenTextReference; openbare AudioClip throwSound;

We beginnen met het maken van een aantal variabelen die we in de game zullen gebruiken. Laten we ze eens bekijken.

  • throwSpeed: de beginsnelheid van de bal wanneer deze op het steegje wordt geplaatst
  • ballReference: een verwijzing naar de bal prefab, ingesteld in de inspecteur
  • StartPos: beginpositie van de eerste aanraking, gebruikt om een ​​uithaalbeweging te detecteren
  • endPos: eindpositie van de aanraking
  • minDistance: minimale beweging die nodig is om de vinger als een veegbeweging te beschouwen
  • ballPos: initiële balpositie
  • ballOnStage: waar wanneer een bal zich momenteel in het steegje bevindt, om meerdere shots tegelijk te voorkomen
  • ballsLeft: het aantal resterende ballen
  • ballsTextReference: verwijzing naar het tekstveld ballen, ingesteld in het infovenster
  • throwSound: verwijzing naar het geluid dat wordt gespeeld wanneer de bal wordt gegooid, ingesteld in de inspecteur

Stap 2: Aanraken detecteren

Het volgende codefragment toont het begin van de Bijwerken methode. Deze methode detecteert of de gebruiker het scherm aanraakt.

void Update () if (Input.touchCount> 0) Touch touch = Input.GetTouch (0);

We controleren de touchCount eigendom van de Invoer klasse om het huidige aantal aanrakingen op het scherm te krijgen. Als touchCount is groter dan 0, we houden een verwijzing naar de eerste aanraken voorwerp. We zullen dit object later gebruiken.

Stap 3: Een veeg detecteren

Met een verwijzing naar de aanraken object, we hebben toegang tot zijn fase property, wat ons helpt te bepalen of de touch is gestart, verplaatst of beëindigd.

Omdat we een beginpunt nodig hebben om een ​​uithaalbeweging te detecteren, hebben we toegang tot het startpunt van de aanraken object, waartoe we toegang hebben wanneer het aanraken voorwerpen fase is gelijk aan TouchPhase.Began. De positie van de aanraken object wordt opgeslagen in zijn positie eigendom.

We hebben toegang tot het eindpunt van de beweging door toegang te krijgen tot de aanraken voorwerpen positie eigendom wanneer het fase eigendom is gelijk aan TouchPhase.Ended.

if (touch.phase == TouchPhase.Began) startPos = touch.position;  if (touch.phase == TouchPhase.Ended) endPos = touch.position;  / * Vergelijk posities * / if (endPos.y - startPos.y> = minDistance.y &&! BallOnStage && ballsLeft> 0) 

Nu we de coördinaten hebben van het begin en het eindpunt van de aanrakingen, kunnen we de afstand berekenen en controleren of het een geldig uithaalbeweging is door het te vergelijken met de waarde die is opgeslagen in de minDistance voorwerp.

We inspecteren ook de waarde van ballOnStage om te controleren of een bal al ter plaatse is en we zorgen ervoor dat de speler genoeg ballen over heeft om verder te spelen. Het aantal resterende ballen wordt opgeslagen in de ballsLeft veranderlijk.

Stap 4: Detecteren van de schermzone

Schermzones worden gemaakt om te berekenen waar de horizontale positie van de bal zal zijn wanneer de bal wordt gemaakt. We doen dit om controle te hebben over de positie van de bal en het vertelt ons waar de bal eindigt en voorkomt dat hij buiten de grenzen raakt. We verdelen het scherm in drie delen, zoals u hieronder kunt zien.


De wiskunde die we gebruiken is vrij eenvoudig, zoals je kunt zien in het onderstaande codeblok. We verdelen het scherm in drie gelijke delen en controleren welk deel de aanraking van de gebruiker bevat.

/ * Verdeel het scherm in 3 delen * / / * Links * / if (touch.position.x> = 0 && touch.position.x <= Screen.width / 3)  ballPos.x = Random.Range(-0.87f, -0.35f);  /* Center */ else if(touch.position.x > Screen.width / 3 && touch.position.x <= (Screen.width / 3) * 2)  ballPos.x = Random.Range(-0.35f, 0.22f);  /* Right */ else if(touch.position.x > (Screen.width / 3) * 2 && touch.position.x <= Screen.width)  ballPos.x = Random.Range(0.22f, 0.36f); 

Na het detecteren van de juiste schermzone, berekenen we een willekeurige positie tussen het begin en het einde van de zone en wijzen die positie toe aan de ballPos veranderlijk.

Stap 5: De bal gooien

Na het bepalen van de startpositie van de bal, maken we een nieuwe GameObject bijvoorbeeld met behulp van de Een exemplaar methode, doorgeven in de ballReference en ballPos variabelen.

GameObject ball = Instantiate (ballReference, ballPos, transform.rotation) als GameObject; ball.rigidbody.AddForce (throwSpeed);

Met de bal op de scène, voegen we een kracht toe om hem door de juiste steeg te laten bewegen. We doen dit door het AddForce methode op de bal star lichaam eigendom, passerend in de throwSpeed variabele die we eerder hebben aangegeven.

Stap 6: Een geluidseffect spelen

We spelen een geluidseffect als de bal in het steegje wordt gegooid. De volgende regel code zorgt daar voor. Vergeet niet om dit in te stellen voor werk throwSound variabele in de Inspecteur.

AudioSource.PlayClipAtPoint (throwSound, transform.position);

Stap 7: De veegvariabelen opnieuw instellen

Na het gooien van de bal, moeten we de variabelen resetten die de aanrakingen van de speler detecteren. Als u dit niet doet, worden meerdere swipes gedetecteerd. We hebben ook de ballOnStage variabele naar waar, voorkomen dat een andere bal tegelijkertijd wordt gegooid.

endPos = new Vector2 (0, 0); startPos = new Vector2 (0, 0); ballOnStage = true;

Hiermee is het Gooibal klasse. De implementatie van de klasse moet er uitzien zoals hieronder getoond.

gebruikmakend van UnityEngine; met behulp van System.Collections; public class ThrowBall: MonoBehaviour private Vector3 throwSpeed ​​= new Vector3 (0, 0, 1100); openbare GameObject-ballReference; privé Vector2 startPos; privé Vector2 endPos; private Vector2 minDistance = new Vector2 (0, 100); private Vector3 ballPos = new Vector3 (0, 0.38f, -11.41f); public bool ballOnStage = false; openbare int ballsLeft = 5; openbare GUIText-ballenTextReference; openbare AudioClip throwSound; void Update () if (Input.touchCount> 0) Touch touch = Input.GetTouch (0); if (touch.phase == TouchPhase.Began) startPos = touch.position;  if (touch.phase == TouchPhase.Ended) endPos = touch.position;  / * Vergelijk posities * / if (endPos.y - startPos.y> = minDistance.y &&! BallOnStage && ballsLeft> 0) / * Deel het scherm in 3 delen * / / * Left * / if (touch.position. x> = 0 && touch.position.x <= Screen.width / 3)  ballPos.x = Random.Range(-0.87f, -0.35f);  /* Center */ else if(touch.position.x > Screen.width / 3 && touch.position.x <= (Screen.width / 3) * 2)  ballPos.x = Random.Range(-0.35f, 0.22f);  /* Right */ else if(touch.position.x > (Screen.width / 3) * 2 && touch.position.x <= Screen.width)  ballPos.x = Random.Range(0.22f, 0.36f);  GameObject ball = Instantiate(ballReference, ballPos, transform.rotation) as GameObject; ball.rigidbody.AddForce(throwSpeed); AudioSource.PlayClipAtPoint(throwSound, transform.position); endPos = new Vector2(0, 0); startPos = new Vector2(0, 0); ballOnStage = true;    

23. BallSensor Klasse

Het volgende script bevat de implementatie van de BallSensor klasse en is bevestigd aan de kogelsensoren, waarbij eventuele botsingen met de kogelsensoren worden behandeld.

Stap 1: Variabelen declareren

We beginnen met het declareren van een variabele met de naam sensorValue, die het aantal punten opslaat dat de balsensor toevoegt aan de score. Omdat de kogelsensoren allemaal hetzelfde prefab zijn, verklaren we deze variabele als openbaar. Hierdoor kunnen we deze waarde in de editor instellen met behulp van de Inspecteur.

gebruikmakend van UnityEngine; met behulp van System.Collections; openbare klas BallSensor: MonoBehaviour public int sensorValue = 0; openbare GUIText-scoreReference; openbare GameObject alertReference;

In de andere twee variabelen worden verwijzingen opgeslagen naar de game-objecten score en waarschuwing, die we ook instellen in Unity's Inspecteur. Deze verwijzingen worden gebruikt om de score te verhogen en de waarschuwing weer te geven wanneer het spel eindigt.

Stap 2: De bal vernietigen

De OnTriggerEnter methode detecteert wanneer een botsing is opgetreden en accepteert de Collider object waar de sensor tegenaan botst, de bal in dit geval. Wanneer een botsing wordt gedetecteerd, wordt de bal vernietigd om te voorkomen dat deze terugkaatst en mogelijk in een ander gat valt.

void OnTriggerEnter (Collider anders) Destroy (other.gameObject);

Stap 3: Throw inschakelen

Na het vernietigen van de bal, zijn we zeker dat hij niet meer op de baan is. Dit betekent dat we nog een bal kunnen gooien zonder ongewenst gedrag te veroorzaken. De volgende coderegel communiceert met de Gooibal klasse en krijgt de ballOnStage variabele, instellen op vals.

Camera.main.GetComponent() .ballOnStage = false;

Laten we eens nader bekijken hoe we toegang hebben tot een variabele die in een andere klas is gedeclareerd. Zoals u nu kunt zien, is een manier om toegang te krijgen tot een variabele of een object dat buiten de huidige klasse is gedeclareerd, om een ​​referentievariabele in te stellen met openbaar of [SerializeField], en gebruik vervolgens de Inspecteur om het een waarde te geven.

De openbaar trefwoord speelt hierin een belangrijke rol. Als u dit gebruikt, is de variabele niet alleen toegankelijk via de Inspecteur, maar ook door code. Om dit te doen, hebben we eerst toegang tot de. Nodig GameObject dat heeft de Scriptcomponent gekoppeld, dat is het Hoofdcamera in dit geval.

Er is slechts één camera in deze game, waardoor dingen gemakkelijker worden. We kunnen een verwijzing naar de hoofdcamera krijgen Camera.main. Gebruik makend van GetComponent we krijgen het script gehecht aan de camera, met behulp van de naam van de klas. We hebben dan toegang tot de openbare variabele genaamd ballOnStage.

Stap 4: de score wijzigen

Het volgende codeblok werkt de score bij met behulp van de referentie die we eerder hebben verklaard.

scoreReference.text = (int.Parse (scoreReference.text) + sensorValue) .ToString ();

We zetten de opgeslagen waarde om in scoreReference naar een geheel getal en voeg het toe aan de waarde die is opgeslagen in sensorValue. We zetten het resultaat om in een string en wijzen het toe aan de tekst eigendom van scoreReference.

Stap 5: De resterende ballen bijwerken

In deze stap verlagen we het aantal resterende ballen. We gebruiken de methode die wordt beschreven in Stap 3 om toegang te krijgen tot de ballsLeft en ballsTextReference variabelen van de Gooibal klasse.

Camera.main.GetComponent() .BallsLeft--; Camera.main.GetComponent() .ballsTextReference.text = Camera.main.GetComponent() .BallsLeft.ToString ();

We verlagen de opgeslagen waarde in ballsLeft en werk het tekst eigendom van ballsTextReference.

Stap 6: Controleren of Game Over is

Het spel is afgelopen als de beschikbare schoten op zijn. De volgende regels code controleren of de ballsLeft variabele is gelijk aan 0 en maak een melding als waar. We noemen dan de Beroep doen op methode om het vernieuwen methode, die het spel opnieuw start door de huidige scène opnieuw te laden.

De tweede parameter van de Beroep doen op methode definieert de vertraging waarmee de vernieuwen methode wordt aangeroepen. We doen dit om de speler enige tijd te geven voordat we een nieuw spel beginnen.

 if (Camera.main.GetComponent() .ballsLeft == 0) Instantiate (alertReference, new Vector3 (0.5f, 0.5f, 0), transform.rotation); Invoke ("Herladen", 3); 

Stap 7: Herladen van het spel

Dit is het laatste deel van de BallSensor klasse. In de vernieuwen methode, we bellen LoadLevel op de Toepassing klasse en herlaad het huidige niveau, waarbij elk object en elke variabele opnieuw wordt ingesteld naar de oorspronkelijke status.

 void Reload () Application.LoadLevel (Application.loadedLevel); 

Dit is hoe de klas eruit ziet als hij klaar is.

gebruikmakend van UnityEngine; met behulp van System.Collections; openbare klas BallSensor: MonoBehaviour public int sensorValue = 0; openbare GUIText-scoreReference; openbare GameObject alertReference; void OnTriggerEnter (Collider anders) Destroy (other.gameObject); Camera.main.GetComponent() .ballOnStage = false; scoreReference.text = (int.Parse (scoreReference.text) + sensorValue) .ToString (); Camera.main.GetComponent() .BallsLeft--; Camera.main.GetComponent() .ballsTextReference.text = Camera.main.GetComponent() .BallsLeft.ToString (); if (Camera.main.GetComponent() .ballsLeft == 0) Instantiate (alertReference, new Vector3 (0.5f, 0.5f, 0), transform.rotation); Invoke ("Herladen", 3);  void Reload () Application.LoadLevel (Application.loadedLevel); 

24. Testen

Het is tijd om de game te testen. druk op Command-P om het spel in Unity te spelen. Als alles naar behoren werkt, bent u klaar voor de laatste stappen.

25. Spelerinstellingen

Als je tevreden bent met je spel, is het tijd om te selecteren Bouw instellingen van de het dossier menu en klik op de Speler instellingen knop. Dit zou de Speler instellingen in de Inspecteur paneel waar u de parameters voor uw toepassing kunt instellen.

Deze instellingen zijn applicatiespecifieke gegevens die de maker of het bedrijf, app-resolutie en weergavemodus, weergavemodus (CPU, GPU), apparaat-compatibiliteit van het besturingssysteem, enz. Bevatten. Configureer de instellingen op basis van de apparaten die u target en de winkel of markt waar je bent van plan om de app te publiceren.

26. Pictogrammen en Splash-afbeeldingen

Met behulp van de afbeeldingen die u eerder hebt gemaakt, kunt u nu een leuk pictogram en een splash-afbeelding voor uw spel maken. Unity toont u de vereiste formaten, die afhankelijk zijn van het platform waarvoor u bouwt.

27. Bouw en speel


Zodra uw project correct is geconfigureerd, is het tijd om terug te gaan naar de Bouw instellingen en klik op de Bouwen Knop. Dat is alles wat nodig is om uw spel te bouwen voor testen en / of distributie.

Conclusie

In deze zelfstudie hebben we geleerd hoe je natuurkundige krachten, veegbewegingen, klassencommunicatie en andere aspecten van game-ontwikkeling in Unity kunt gebruiken. Ik moedig je aan om met het resultaat te experimenteren en het spel aan te passen zodat het je eigen spel wordt. Ik hoop dat je deze tutorial leuk vond en vond het nuttig.