Hoe een Basic Unity Platform Game te maken
In deel 1 van Hoe een Basic Unity Platform-game te maken, hebben we de stappen doorlopen van het maken van je basispersonage door fysica, platforms en muisinvoer toe te voegen. In dit volgende deel bespreken we hoe u procedurele platforms, een gamemenu en enkele bronnen kunt toevoegen om modellen en extra Unity-plug-ins te vinden die u in toekomstige projecten kunt gebruiken.
Procedurele platforms maken
Dus in deel een van deze tutorial hebben we zojuist een basisplatform gemaakt waar je personage op kan stuiteren ( en vallen voor hun ondergang) - maar voor een echte platformer moeten we extra platforms toevoegen. Maar we willen geen miljoen platforms toevoegen - we willen dat Unity automatisch platforms maakt terwijl ons personage tegensta.
Hiervoor hebben we een platformsjabloon nodig, ook wel een prefab genoemd. Prefab is een afkorting van geprefabriceerd, en het betekent simpelweg vooraf gemaakt - meestal een kopie van een game-object dat je steeds opnieuw kunt gebruiken. Prefabs kunnen namelijk hiërarchieën van game-objecten bevatten, wat betekent dat u een hele scène met game-objecten kunt prefabriceren.
Dus wat u moet doen, is een nieuwe map met items met de naam Prefabs maken en vervolgens ons platform van het paneel Hiërarchie slepen en neerzetten in deze nieuwe map. Prefabs zijn herkenbaar in het paneel Hiërarchie door de kleur blauw.
Om Unity opdracht te geven om procedurele platforms te maken, moeten we nu een script maken genaamd GameManager en dit koppelen aan de camera. GameManager-scripts bevatten in feite belangrijke instructies voor de engine om door te spelen naar de gameplay - in dit geval zal het platforms genereren terwijl ons karakter meespeelt.
De reden dat we het aan de camera bevestigen is omdat de camera nooit wordt vernietigd en het blijft constant - dus het script wordt nooit vernietigd en blijft constant door eraan te worden bevestigd.
Hier is wat moet worden opgenomen in het script:
Om deze code een beetje uit te leggen, is het noodzakelijk dat we een verwijzing maken naar zowel het prefabpaneel als de bol (ons karakter), dus u moet ze slepen en neerzetten in hun specifieke sleuven in uw editor.
Deze code bevat ook drie privévariabelen: de regels die beginnen met privé-var. Hiermee wordt het prefabpaneel op de volgende manieren geïnstantieerd (referentie):
- Private var boundary: float plaatst een limiet op de y-as, dus wanneer ons personage hoger springt dan deze grens, wordt een nieuw panel gemaakt.
- Particuliere var-rotatie: Quaternion; voegt eenvoudig een noodzakelijke rotatie toe om onze prefabs te instantiëren - we voegen echter rotatie toe = Quaternion.identify; omdat dit de motor de opdracht geeft om het spelobject niet te roteren. Het object (onze prefabpanelen) zal letterlijk perfect zijn uitgelijnd met de wereld.
- De laatste privévariabele lastPlatformPosition onthoudt en bewaart de positie van het laatste platform als een 3D-vector (in principe zullen de platforms niet achter je verdwijnen, zodat je achteruit kunt gaan door de spelwereld als je dat wilt).
In dit volgende stukje script gaan we voor elk frame een controle toevoegen , ongeacht of onze bol (karakter) boven de grens ligt (die nieuwe platforms genereert) - als ons karakter boven de grens ligt, zullen we de grens opheffen limiet om een nieuw paneel / platform hoger dan de vorige te maken.
Onze volgende stap is het toevoegen van code die de volgende paneelpositie bepaalt:
We gebruiken een do while- lus in deze code om ervoor te zorgen dat de X- en Z-waarden van de vector (de positie in de gamewereld) niet identiek zijn aan de vorige platforms - dus onze procedureel gegenereerde platforms zullen altijd in hoogte toenemen.
Natuurlijk willen we niet dat deze waarden strikt worden geplaatst - een beetje willekeur is een goede zaak, anders maken we gewoon een perfecte trap. Dus gebruiken we de functie Random.Range, tussen waarden -1 en 2, om willekeurige waarden voor X en Z te bellen. Je kunt een beetje met deze nummers spelen als je wilt rondhangen.
Een spelmenu maken
Tot nu toe hebben we een spel gemaakt waarin je met toenemende hoogte kunt springen en de muis rond kunt bewegen om de richting te bepalen. Het probleem is dat als je van het platform valt, je gewoon eindeloos valt - we moeten in een dood / spelmenu schrijven om opnieuw te beginnen.
Dus in principe zullen we een script schrijven dat controleert of onze sfeer (karakter) onder het eerste platform van het spel valt . Als dit het geval is, laadt het script een nieuwe scène.
Onze eerste stap zal zijn om te controleren of de bol onder een bepaalde drempel is gedaald. Ga naar het GameManager- script dat we eerder hebben gemaakt en kijk naar de if- instructie van de updatefunctie .
We gaan hier een else if- verklaring gebruiken om te controleren of de positie van onze bol minder dan -2, 0 eenheden van de Y-positie is - als dat zo is, is onze privé-functie game Over beter, dat stukje script spreekt voor zich.
Dat laatste stukje script is de functie om te gebruiken voor het afhandelen van een game over de status en om ons gamemenu te laden.
PRO TIP: Als het probleem zich voordoet met uw computer of een laptop / notebook, kunt u proberen de Reimage Plus-software te gebruiken die de opslagplaatsen kan scannen en corrupte en ontbrekende bestanden kan vervangen. Dit werkt in de meeste gevallen, waar het probleem is ontstaan door een systeembeschadiging. U kunt Reimage Plus downloaden door hier te klikkenDit komt van de Application Class van Unity - we kunnen de LoadLevel- functie gebruiken om een nieuwe scène te creëren, in dit geval is dit gewoon ons gamemenu - onthoud dat eigenlijk alles in Unity levels zijn. Hoofdmenu's (Startspel - Opties - Credits - Etc.) zijn in feite gewoon levels / scènes met stukjes klikbare tekst. Een beetje zoals Skyrim's laadschermen, nietwaar? Het zijn gewoon 3D-modellen in een lege wereldruimte met een laadbalk.
In elk geval moeten we een scène maken via Bestand> Nieuwe scène en hem de naam Menu geven terwijl hij wordt opgeslagen. Vervolgens gaan we beide scènes toevoegen aan het bouwproces. Dit gebeurt via Bestand> Bouwinstellingen .
Onze menuscène moet nog steeds open zijn, dus klik gewoon op de knop Huidige toevoegen en voeg de scène toe aan je bouwinstellingen - doe dit nog een keer met de levelscène.
Wanneer we sterven in het spel, moet het script dat we hebben gemaakt ons overbrengen van het spelniveau naar de menuscène.
Voeg een startknop toe voor spelers
Nu kunnen we het spel spelen in een testmodus, maar vanaf nu kunnen spelers het spel niet starten als we dit spel ergens zouden uploaden. We moeten dus een gamemenu maken met een knop om het spel te starten.
Schakel dus over naar de gamemenu-scène en voeg dit bit toe aan de camera ( onthoud in hoofdstuk 1 van deze tutorial in het Inspecteur-paneel?).
- Vlaggen wissen: effen kleur
- Achtergrond: # 000
- Breedte: 200
- Hoogte: 60
Dit geeft ons een solide zwarte achtergrond voor ons spelmenu - dit gebeurt in RGB-waarden, niet in hexadecimale volgorde - dus blauw is 001, groen is 010, rood is 100, enz. Ik zou dit voor je kunnen uitleggen, maar alles wat je nodig hebt doen is de RGB-kiezer van Google als u een specifieke kleur wilt.
Verderop moeten we onze knop toevoegen om het spel te starten. Dit gebeurt via UI-elementen - in principe kunnen we UI-elementen toevoegen op dezelfde manier als we 3D-elementen toevoegen, via het paneel Hiërarchie . Dus ga je gang en maak een UI-knop, en je ziet een aantal nieuwe elementen in het paneel Hiërarchie :
- EventSystem
- Canvas
- Knop
- Tekst
Om dit te doorbreken - het canvas is onze container voor alle UI-elementen, en we kunnen het responsief maken ( door responsief bedoel ik schaal naar schermgrootte, niet responsief zoals het antwoord op vragen die je vraagt. Dat kun je het beste overlaten aan AI-scripts). In ieder geval gaan we de positie van de knop als volgt wijzigen:
- Rect Transform {Pos X: 0, Pos Y: 0, Pos Z: 0}
- Rect Transform {Width: 200, Height: 60}
Om dit wat eleganter te maken, kun je de bronafbeelding van de knop verwijderen en er een kleur voor instellen. En als u de tekst van de knop wilt wijzigen, bewerkt u het tekstelement in iets als START GAME en geeft u het een lettergrootte rond 16.
Om de knop klikbaar te maken, voegen we een functie toe aan het UIController-script in het Button- element. Voeg dit stukje code hieronder toe:
Pas deze functie toe op de Inspector- instellingen van de knop en in de component-instellingen Button (Script) voegen we eenvoudig een functie toe die wordt uitgevoerd wanneer de speler op de Start-knop klikt. Voeg dus gewoon een functie toe aan de gebeurtenis On Click () en sleep de knop Game starten naar het invoerveld. Selecteer ten slotte de nieuw gemaakte functie uit het UIController-script ( UIController.StartGame)
We kunnen deze functie toepassen in de Inspector- instellingen van de knop. In de component-instellingen Button (Script) kunnen we een functie uitvoeren wanneer een speler erop klikt. Hiervoor voegen we een nieuwe functie toe aan de gebeurtenis On Click () door op het pictogram + te klikken. Nu kunnen we de knop zelf naar het invoerveld slepen en neerzetten. Vervolgens selecteren we de functie die we zojuist hebben geschreven van het UIController-script (UIController.StartGame).
Hoe te exporteren / publiceren als een WebGL-browsergame
Open de build-instellingen en kies WebGL als uw doelplatform. Klik nu op de knop Platform schakelen en klik ten slotte op de knop Build en geef je game een titel. Nadat het is gemaakt, wordt het geëxporteerd / opgeslagen als een HTML-bestand, dat kan worden geopend / weergegeven in elke WebGL-browser. Hoewel als u uw spel wilt publiceren, er twee methoden zijn om dit te bereiken:
- Upload uw spel naar een soort bestandshost (Dropbox, Google Drive, enz.) En deel de link vervolgens. Dit is handig voor kleine demo's die je wilt laten zien aan vrienden of aan potentiële klanten ( game portal-websites die ofwel je game kopen of samen met jou een advertentie-share-omzet genereren).
- Upload uw spel naar een FTP-server waarvan u de eigenaar bent en sluit deze in een
U kunt die iframe-waarden aanpassen en er een aantal verschillende dingen mee doen. Als u bijvoorbeeld iframe-tags zoals allowfullscreen = true toevoegt, kan uw browsergame op volledig scherm worden weergegeven.
Aanvullende bronnen:
Ik zou aanbevelen om deze game die we in deze tutorial hebben gemaakt niet te publiceren naar een portal voor platformspellen; je ziet er echt heel raar uit zonder het eerst een beetje op te poetsen.
Een manier om uw spel veel beter te laten lijken, vooral als u niet bijzonder goed bent in het maken van 3D-modellen, is het gebruik van gratis ( of betaalde) bronnen. Hier zijn enkele bibliotheken die de moeite waard zijn om te bekijken:
- Unity Asset Store ( officiële winkel van Unity - veel gratis opties hier ook)
- Sketchfab: Unity 3D-modellen
- Deviantart: Unity 3D-modellen
- Procedural Worlds: Unity-activa
- GameArt2D: Freebies ( meestal sprite / pixel-gebaseerde items)
Er zijn echt heel veel bronnen, gewoon om voorzichtig te zijn en de fijne afdrukken te lezen - sommige gratis items mogen in commerciële projecten worden gebruikt, anderen laten je alleen hun middelen gebruiken als je spel gratis is om te spelen.
PRO TIP: Als het probleem zich voordoet met uw computer of een laptop / notebook, kunt u proberen de Reimage Plus-software te gebruiken die de opslagplaatsen kan scannen en corrupte en ontbrekende bestanden kan vervangen. Dit werkt in de meeste gevallen, waar het probleem is ontstaan door een systeembeschadiging. U kunt Reimage Plus downloaden door hier te klikken