In deze tutorialserie laten we u zien hoe u het klassieke Arkanoid (of Breakout) -spel in Unity kunt recreëren, met behulp van de eigen 2D-hulpmiddelen van Unity. In elke post zullen we ons concentreren op een specifiek deel van het spel; in dit bericht voegen we geluiden en muziek toe, maken we nieuwe niveaus en implementeren we het spel op verschillende apparaten en platforms.
In de vorige tutorials hebt u het project opgezet, het gedrag van de hoofdobjecten gecodeerd en een scoresysteem en livesysteem geïmplementeerd. Als je de vorige tutorials nog niet hebt voltooid, raden we je ten zeerste aan dit te doen voordat je verdergaat.
Bekijk deze demo om te zien waar we naar streven in de hele serie:
In het eerste bericht in deze serie importeerde je verschillende geluids- en muziekbestanden. Het is nu tijd om ze te gebruiken. In de Sounds map, zijn er drie bestanden:
hit.wav
: te gebruiken bij elke balbotsing.lose.wav
: te gebruiken wanneer de speler een leven verliest.point.wav
: om vervolgens te gebruiken, scoort de speler een punt.We moeten beide wijzigen Speler en Bal scripts om deze effecten te spelen. Laten we beginnen met de Bal voorwerp.
In eerste instantie moeten we een toevoegen audiocomponent naar de game-objecten. Selecteer de bal en voeg een toe Geluidsbron (Hiërarchie> Inspecteur> Component toevoegen). Merk op dat u de optie moet uitschakelen Speel On Awake, als het is aangevinkt; anders worden de geluidseffecten automatisch afgespeeld wanneer de scène wordt gestart.
Je hebt een audiocomponent; nu moet je het ballenscript wijzigen om met de component zelf te communiceren. Maak een nieuwe variabele voor het geluidsbestand. Aangezien u toegang wilt tot het geluid in de editor, moet de variabele dit zijn openbaar
:
openbare AudioClip hitSound;
We laten de bal een geluid produceren telkens wanneer het botst met iets terwijl het actief is. Om dit te doen, gebruiken we de OnCollisionEnter2D
methode, controleer of de bal actief is en speel de clip als dat zo is:
ongeldig OnCollisionEnter2D (collision2D-botsing) if (ballIsActive) audio.PlayOneShot (hitSound);
Merk op dat je moet controleren of de bal actief is voordat je het geluid speelt - anders zal het geluid constant beginnen te spelen als de bal inactief is.
Ga nu naar de editor en controleer of u een nieuwe parameter hebt, Hit Sound, in het ballenscript:
Sleept de hit.wav bestand van de project tab en plaats het op de Hit Sound parameter van het script. Je zou zoiets als dit moeten zien:
druk op Spelen, en controleer of je nu het juiste geluid hoort elke keer dat de bal iets afwerpt.
Laten we nu de twee resterende geluiden in het spel invoegen. Voeg nog een toe Geluidsbron, maar deze keer naar het spelerobject. Schakel nogmaals het vinkje uit Speel On Awake keuze.
Open nu het spelerscript en maak twee extra variabelen. De eerste variabele is voor het geluid dat wordt gespeeld wanneer de speler een aantal punten scoort, en de tweede is voor het geluid dat wordt gespeeld wanneer de speler een leven verliest. Beide moeten als openbaar worden verklaard.
openbare AudioClip pointSound; openbare AudioClip-lifeSound;
Omdat je nu de objecten hebt, laten we de addPoints
methode om het geluid af te spelen elke keer dat het wordt gebeld. Zoals eerder, moet je de PlayOneShot
methode van de audio
voorwerp:
void addPoints (int points) playerPoints + = points; audio.PlayOneShot (pointSound);
Doe nu hetzelfde in de TakeLife
methode:
void TakeLife () playerLives--; audio.PlayOneShot (LifeSound);
Sla het script op en ga nogmaals naar de editor. Versleep de twee resterende geluidsbestanden naar elk nieuw spelgeluid (punt en leven). Je zou zoiets als de volgende afbeelding moeten hebben:
Nu, Spelen het spel en controleer of de drie geluiden spelen als ze worden verwacht.
Ondanks de geluidseffecten is de algehele sensatie tijdens het spelen van het spel vrij leeg. Laten we dat aanpassen door achtergrondmuziek toe te voegen die anders is voor elk niveau.
In de Hiërarchie tab, selecteer de Achtergrond object en voeg een audiobroncomponent toe:
Sleep nu Jaunty Gumption.mp3 van de project tab en plaats het op de Audioclip parameter van de Geluidsbron component. Deze keer moet je de Speel On Awake parameter gecontroleerd, omdat we willen dat de muziek aan het begin van ons niveau begint te spelen. Schakel de Lus optie ook; hierdoor wordt de muziek op een oneindige lus afgespeeld zolang het niveau wordt afgespeeld.
Ga je gang en druk op Spelen! Je game bevat nu geluid en muziek.
Om het spel te voltooien, zijn er twee dingen die we zullen behandelen:
Laten we beginnen met het creëren van een tweede niveau voor de game. In plaats van een niveau vanaf nul te creëren, kunnen we het eerste niveau dupliceren en de objecten van dit nieuwe niveau wijzigen.
Om dat te doen, hoeft u alleen maar uw scène als een nieuwe op te slaan. Klik Bestand> Scene opslaan als ... , Noem maar op Level 2
, en plaats het in de levels map.
Om dit niveau er anders uit te laten zien dan het eerste, zouden we idealiter de posities van alle blokken wijzigen. Voel je vrij om dit zelf te doen, maar voor het doel van deze tutorial zullen we alleen de achtergrondafbeelding en het niveau muziek veranderen.
Selecteer de Achtergrond van de Hiërarchie en ga naar de Inspecteur. Sleept de background2 bestand van de Sprites \ Achtergronden map naar de sprite component van de Achtergrond game object:
Om de achtergrondmuziek te veranderen, hoeft u alleen het gewenste muziekbestand naar de Audioclip parameter. Gebruik voor niveau 2 de Apen Spinning Monkeys.mp3 het dossier.
Als u op drukt Spelen knop kunt u dit nieuwe niveau testen. Zoals je ziet gedraagt het zich op dezelfde manier als de eerste, maar met een andere achtergrond en andere muziek. Aangezien het tweede niveau gereed is, is het nu tijd om de twee eerder geïdentificeerde situaties aan te pakken.
Maak in het peddel-script van de speler een nieuwe methode genaamd Winnen verliezen
. Hier zullen we controleren wanneer de speler al zijn leven verliest en dienovereenkomstig reageren: als playerLives
bereikt 0
, we noemen gewoon de Application.LoadLevel
methode en laad het eerste niveau opnieuw.
void WinLose () // herstart het spel als (playerLives == 0) Application.LoadLevel ("Level1");
Vervolgens behandelen we het geval waarin alle blokken zijn vernietigd, dus we willen naar het volgende niveau. Om het aantal resterende blokken te bepalen, kunnen we de FindGameObjectsWithTag
methode opnieuw, deze keer zoekend naar objecten in het huidige gelabelde niveau Blok. Als de resulterende array een lengte heeft van 0
, dan weten we dat het tijd is om het volgende niveau te laden.
Aangezien deze tutorial slechts uit twee niveaus bestaat, sluiten we de game af als de speler het tweede niveau wint (door te bellen Application.Quit
).
Het volledige fragment voor de Winnen verliezen
methode is:
void WinLose () // herstart het spel als (playerLives == 0) Application.LoadLevel ("Level1"); // blocks destroyed if ((GameObject.FindGameObjectsWithTag ("Block")). Length == 0) // controleer het huidige niveau if (Application.loadedLevelName == "Level1") Application.LoadLevel ("Level2") ; else Application.Quit ();
We zullen de Winnen verliezen
methode in de Bijwerken
methode van het spelerscript - voeg het toe aan het einde van de methode. Voor de eenvoud, de complete Bijwerken
methode is:
void Update () // horizontal movement playerPosition.x + = Input.GetAxis ("Horizontal") * playerVelocity; // verlaat het spel als (Input.GetKeyDown (KeyCode.Escape)) Application.Quit (); // update de game-objecttransformatie transform.position = playerPosition; // grenzen als (playerPosition.x < -boundary) transform.position = new Vector3 (-boundary, playerPosition.y, playerPosition.z); if (playerPosition.x > boundary) transform.position = new Vector3 (boundary, playerPosition.y, playerPosition.z); // Controleer gamestatus WinLose ();
Ga terug naar de editor. Om het te maken Winnen verliezen
methode correct werkt, moet je de blokken in het spel taggen. In de project tab, ga naar de prefabs map en selecteer een blok. Alle blokken zijn momenteel niet getagged en er is geen Blok tag, dus we moeten het maken. Klik op de Label knop en selecteer de Tag toevoegen keuze. Voeg een nieuwe tag toe met de naam Blok:
De game is nu klaar voor testen. Klik Spelen en probeer het uit!
Het bouwen en inzetten van het project zijn meestal de laatste stappen in de ontwikkeling van een project. In deze sectie leert u hoe u een definitieve build en de nodige configuraties kunt maken om deze in een omgeving met meerdere platforms te laten draaien.
Eerst moet je alle scènes toevoegen aan een unieke build. Klik Bestand> Instellingen maken. Een nieuw venster verschijnt; de Scènes in Build gebied zal waarschijnlijk leeg zijn, zoals:
Als dat het geval is, moet u de scènes toevoegen die we eerder hebben gemaakt. Klik Huidige toevoegen en een scène zal worden toegevoegd aan de Scènes in Build Gebied:
In ons voorbeeld hebben we het eerste niveau toegevoegd. Sluit nu dit venster en selecteer het tweede niveau in de editor. Klik Bestand> Instellingen maken nogmaals en klik Huidige toevoegen nog een keer:
Als je het tweede niveau voor de eerste hebt toegevoegd, maak je dan geen zorgen: gebruik gewoon de muis om hun posities in de interface te verwisselen (aangezien de eerste scène in de lijst degene is die wordt geladen wanneer de game wordt gestart).
Zodra beide niveaus in de juiste volgorde zijn toegevoegd, klikt u op Build and Run en je zou een correcte build van je laatste game moeten zien.
Zoals je ziet, zijn er verschillende platforms waar je voor kunt kiezen om je game in te zetten, namelijk:
Het grote voordeel van het gebruik van Unity is dat je je game maar één keer hoeft te programmeren, waarna je de engine met behulp van de engine snel en eenvoudig kunt gebruiken op elk van de bovengenoemde platforms.
Houd er echter rekening mee dat sommige platforms en besturingssystemen bepaalde beperkingen hebben op het gebied van implementatieregels. Als u bijvoorbeeld wilt implementeren op iOS-apparaten, moet u over een Mac-systeem en een juiste ontwikkellicentie beschikken. Je hebt ook licenties nodig om te deployen naar PS3 en Xbox.
Nu u deze zelfstudie hebt voltooid, denken we dat u bereid bent enkele uitdagingen aan te gaan. Je kunt deze uitdagingen zien als een meesterlijke kenniszoektocht.
Dit concludeert deze tutorialserie over het bouwen van Arkanoid met Unity's 2D-toolset. We hebben in deze korte serie veel aandacht besteed, en je zou nu genoeg moeten weten om te beginnen met je eigen 2D-spellen. Als u vragen of opmerkingen heeft, kunt u ons altijd een bericht sturen in de opmerkingen.