Sådan oprettes et Basic Unity Platform Game

I vores del 1 af Sådan oprettes et Basic Unity Platform Game, gik vi gennem trinene med at oprette din grundlæggende karakter, tilføje fysik, platforme og mus input. I denne næste del går vi over, hvordan du tilføjer procedureplatforme, en spilmenu og nogle ressourcer til at finde modeller og yderligere Unity-plugin-moduler, du kan bruge i fremtidige projekter.

Oprettelse af Procedural Platforms

Så i en del af denne tutorial har vi lige lavet en grundlæggende platform, som din karakter kan hoppe rundt på ( og falde til deres død) - men for en sand platformer skal vi tilføje yderligere platforme. Men vi ønsker ikke at tilføje en million platforme - vi ønsker, at Unity automatisk skal skabe platforme, da vores karakter springer langs.

Til dette har vi brug for en platformskabelon - ellers kendt som en prefab. Prefab er kort for præfabrikeret, og det betyder simpelthen præfabrikerede - som regel en kopi af et spilobjekt, som du kan genbruge igen og igen. Faktisk kan præfabrikker indeholde hierarkier af spilobjekter, hvilket betyder at du kunne prefabbe en hel scene af spilobjekter.

Så hvad du skal gøre er at oprette en ny aktivmappe med navnet Prefabs, og træk og slip vores platform fra hierarki- panelet til denne nye mappe. Prefabs vil blive genkendelig i hierarkiet panelet med farven blå.

Nu skal vi oprette et script, der hedder GameManager, og vedhæfte det til kameraet for at kunne instruere Unity om at oprette processuelle platforme. GameManager scripts indeholder grundlæggende vigtige instruktioner for motoren til relæer til gameplayet - i dette tilfælde vil det generere platforme som vores karakter humle sammen.

Grunden til at vi vedhæfter det til kameraet er, fordi kameraet aldrig ødelægges, og det forbliver konstant - så scriptet er aldrig ødelagt og forbliver konstant ved at blive knyttet til det.

Her er hvad der skal inkluderes i scriptet:

For at forklare denne kode lidt, er det nødvendigt for os at lave en reference til både præfabrikken og kuglen (vores karakter), så du skal trække og slippe dem ind i deres specifikke slots i din editor.

Denne kode indeholder også tre private variabler - linjerne der starter med private var. Disse vil instantiere (reference) præfabrikken panelet på følgende måder:

  • Privat var grænse: Float placerer en grænse på y-aksen, så når vores karakter hopper højere end denne grænse, oprettes et nyt panel.
  • Privat var rotation: Quaternion; tilføjer blot en nødvendig rotation for at instantiere vores præfabrikker - dog tilføjer vi rotation = Quaternion.identify; fordi dette instruerer motoren til ikke at rotere spilobjektet. Objektet (vores præfabrikerede paneler) vil bogstaveligt talt være perfekt tilpasset verden.
  • Den endelige private variabel lastPlatformPosition vil huske og gemme placeringen af ​​den sidste platform som en 3D-vektor (dybest set vil platformene ikke forsvinde bag dig, så du kan gå tilbage gennem spilverdenen, hvis du vil).

I dette næste stykke script skal vi tilføje en check for hver ramme, hvorvidt vores kugle (tegn) ligger over grænsen (der genererer nye platforme) - hvis vores tegn er over grænsen, vil vi hæve grænsen grænse for at oprette et nyt panel / platform højere end det sidste.

Vores næste skridt er at tilføje kode, der bestemmer den næste panelposition:

Vi bruger et løft i denne kode for at sikre, at vektorens X- og Z-værdier (dets position i spilverdenen) ikke er identiske med de foregående platforme - så vores processormæssigt genererede platforme vil altid være stigende i højden.

Selvfølgelig ønsker vi ikke, at disse værdier skal placeres strengt - en smule tilfældighed er en god ting, ellers laver vi bare en perfekt trappe. Så vi bruger Random.Range funktionen mellem værdier -1 og 2 for at kalde tilfældige værdier for X og Z. Du kan lege med disse tal lidt, hvis du vil narre rundt.

Oprettelse af en spilmenu

Indtil nu har vi lavet et spil, hvor du kan hoppe med stigende højde og flytte musen rundt for at styre retningen. Problemet er, at hvis du falder ud af platformen, falder du bare uendeligt - vi skal script i en død / spil menu for at starte over.

Så dybest set skriver vi et script, der kontrollerer, om vores sfære (karakter) falder under den første platform i spillet . I så fald vil scriptet indlæse en ny scene.

Vores første skridt vil være at kontrollere om kuglen er faldet under en bestemt tærskelværdi. Gå ind i GameManager- scriptet, som vi lavede tidligere, og se til om- sætningen af opdateringsfunktionen .

Vi vil bruge en anden hvis erklæring her, for at kontrollere, om vores sfære er under -2, 0 enheder i Y-positionen - hvis det er vores private funktion gameOver willwell, er den lille smule script selvforklarende.

Den sidste bit af script er den funktion, der skal bruges til at håndtere et spil over tilstand og indlæse vores spilmenu.

PRO TIP: Hvis problemet er med din computer eller en bærbar computer / notesbog, skal du prøve at bruge Reimage Plus-softwaren, som kan scanne lagrene og udskifte korrupte og manglende filer. Dette virker i de fleste tilfælde, hvor problemet er opstået på grund af systemkorruption. Du kan downloade Reimage Plus ved at klikke her

Dette harkens til Unitys Application klasse - vi kan kalde LoadLevel- funktionen til at oprette en ny scene, som i dette tilfælde er simpelthen vores spilmenu - husk at alt i alt er i niveauer. Hovedmenuer (Start Game - Options - Credits - Etc.) er stort set kun niveauer / scener med bits af klikbar tekst. Slags som Skyrims skærmbilleder, eh? De er kun 3D-modeller i et tomt verdensrum med en indlæsningsbjælke.

Under alle omstændigheder skal vi lave en scene gennem Filer> Ny scene og give den navnet Menu, mens du gemmer det. Så skal vi tilføje begge scener til byggeprocessen. Dette gøres via Filer> Bygningsindstillinger .

Vores menuscene skal stadig være åbne, så klik blot på knappen Tilføj nuværende og tilføj scenen til dine Bygningsindstillinger - gør det igen med niveau scenen.

Når vi dør i spillet, skal scriptet vi skabte overgå os fra spilniveau til menuscene.

Tilføj en startknap til spillere

Nu kan vi spille spillet i testmodus, men lige nu har spillerne ingen mulighed for at starte spillet, hvis vi skulle uploade dette spil et eller andet sted. Så vi skal oprette en spilmenu, der har en knap til at starte spillet.

Så skift til spillets menuscene, og tilføj denne bit til kameraet ( i inspektionspanelet, husk fra punkt 1 i denne vejledning?).

  • Klare flag: Solid farve
  • Baggrund: # 000
  • Bredde: 200
  • Højde: 60

Dette giver os en solid sort baggrund for vores spilmenu - dette er lavet i RGB værdier, ikke hex - så blå ville være 001, grøn er 010, rød er 100 osv. Jeg kunne forklare dette for dig, men alt hvad du behøver at gøre er Google RGB picker, hvis du vil have en bestemt farve.

Når vi fortsætter, skal vi tilføje vores knap for at starte spillet. Dette gøres gennem UI-elementer - i grunden kan vi tilføje UI-elementer på samme måde som vi tilføjer 3D-elementer gennem hierarkipanelet . Så fortsæt og opret en UI-knap, og du vil se nogle nye elementer i hierarki- panelet:

  • EventSystem
  • Lærred
  • Knap
  • Tekst

For at bryde det ned - lærredet er vores container til alle brugergrænseelementer, og vi kan gøre det lydhørt ( med lydhør mener jeg at skalere til skærmstørrelse, ikke lydhør som om det vil svare på spørgsmål, du spørger. Det er bedst at efterlade AI-scripts). Under alle omstændigheder vil vi ændre knapens position til dette:

  • Rect Transform {Pos X: 0, Pos Y: 0, Pos Z: 0}
  • Rect Transform {Bredde: 200, Højde: 60}

For at gøre dette lidt mere elegant kan du fjerne knappens kildebillede og sætte en farve til den. Og for at ændre knappens tekst, skal du bare redigere tekstelementet til noget som START GAME og give det en skrifttypestørrelse omkring 16.

For at gøre knappen klikbar, tilføjer vi en funktion til UIController scriptet i Button elementet. Tilføj blot denne del kode nedenfor:

Anvend denne funktion til knappens inspektørindstillinger, og i indstillingerne for Button (Script) -komponenten vil vi blot tilføje en funktion, der udføres, når afspilleren klikker på vores Start-knap. Så tilføj bare en funktion til On Click () hændelsen, og træk / slip Start Game-knappen til indtastningsfeltet. Endelig skal du vælge den nyoprettede funktion fra UIController-scriptet ( UIController.StartGame)

Vi kan anvende denne funktion i knappens inspektionsindstillinger . I knappen Indstillinger (Script) kan vi udføre en funktion, når en spiller klikker på den. Til dette tilføjer vi en ny funktion til On Click () hændelsen ved at klikke på + -ikonet. Nu kan vi trække og slippe knappen selv på inputfeltet. Så vælger vi den funktion, vi lige skrev fra UIController scriptet (UIController.StartGame).

Sådan eksporteres / publiceres som et webGL-browserspil

Åbn bygningsindstillingerne, og vælg WebGL som din målplatform. Klik nu på knappen Switch Platform, og endelig klik på knappen Build og giv dit spil en titel. Efter at den er opbygget, eksporteres den / gemmes som en .HTML-fil, som kan åbnes / ses i enhver webGL-aktiveret browser. Selv om du vil offentliggøre dit spil, er der to metoder til at opnå dette:

  • Upload dit spil til en slags filhost (Dropbox, Google Drive osv.), Og del derefter linket. Dette er nyttigt for små demoer, du vil vise til venner eller potentielle kunder ( spilportalwebsteder, der enten køber dit spil eller opretter en annoncetildeling med dig).
  • Upload dit spil til en FTP-server, du ejer, og indlejrer det i en