Så här skapar du ett Basic Unity Platform Game
I vår del 1 av hur man skapar ett plattformspelspel, gick vi igenom stegen för att skapa din grundläggande karaktär, lägga till fysik, plattformar och musinmatning. I den här nästa delen går vi över hur man lägger till processplattformar, en spelmeny och några resurser för att hitta modeller och ytterligare plugin-moduler som du kan använda i framtida projekt.
Skapa Procedural Platforms
Så i en del av den här handledningen har vi bara gjort en grundläggande plattform som din karaktär kan studsa på ( och faller till deras döm) - men för en sann plattform måste vi lägga till ytterligare plattformar. Men vi vill inte lägga till en miljon plattformar - vi vill att Unity automatiskt skapar plattformar som vår karaktär studsar med.
För detta behöver vi en plattformsmall - annars känd som en prefab. Prefab är kort för prefabricerad, och det betyder helt enkelt förgjorda - vanligtvis en kopia av ett spelobjekt som du kan återanvända om och om igen. Faktum är att prefabs kan innehålla hierarkier av spelobjekt, vilket innebär att du kan förbereda en hel scen av spelobjekt.
Så vad du behöver göra är att skapa en ny tillgångsmapp med namnet Prefabs, dra och släpp sedan vår plattform från hierarkipanelen till den här nya mappen. Prefabs kommer att identifieras i hierarkipanelen med färgen blå.
Nu för att kunna instruera Unity att skapa processuella plattformar måste vi skapa ett skript som heter GameManager och bifoga det till kameran. GameManager-skript innehåller i grunden viktiga instruktioner för motorn att reläera till gameplayen - i det här fallet kommer det att generera plattformar som vår karaktär hoppar tillsammans.
Anledningen till att vi ansluter den till kameran beror på att kameran aldrig förstörs, och den är konstant - så manuset förstörs aldrig och förblir konstant genom att vara knutet till det.
Här är vad som behöver ingå i manuset:
För att förklara den här koden är det nödvändigt att vi skapar en referens till både den prefabricerade panelen och sfären (vår karaktär), så du måste dra och släppa dem i sina specifika platser i din redaktör.
Denna kod innehåller också tre privata variabler - de linjer som börjar med privat var. Dessa kommer att ordna (referens) prefabpanelen på följande sätt:
- Privat var gränsen: Float lägger en gräns på y-axeln, så när vår karaktär hoppar högre än den här gränsen kommer en ny panel att skapas.
- Privat var rotation: Quaternion; lägger helt enkelt till en nödvändig rotation för att instansera våra prefabs - dock lägger vi till rotation = Quaternion.identify; eftersom det här instruerar motorn att inte rotera spelobjektet. Föremålet (våra prefabricerade paneler) kommer bokstavligen att vara perfekt anpassat till världen.
- Den slutliga privata variabeln lastPlatformPosition kommer att minnas och spara positionen för den sista plattformen som en 3D-vektor (i grund och botten kommer plattformarna inte att försvinna bakom dig, så du kan gå bakåt genom spelvärlden om du vill).
I denna nästa bit av skript kommer vi att lägga till en check för varje ram om vår sfär (karaktär) ligger över gränsen (som genererar nya plattformar) eller om vår karaktär ligger över gränsen kommer vi att höja gränsen gräns för att skapa en ny panel / plattform som är högre än den förra.
Vårt nästa steg är att lägga till kod som bestämmer nästa panelposition:
Vi använder en slinga i denna kod för att säkerställa att vektorns X- och Z-värden (dess position i spelvärlden) inte är identiska med tidigare plattformar, så våra processormässigt genererade plattformar kommer alltid att öka i höjd.
Naturligtvis vill vi inte att dessa värden strikt placeras - lite slump är en bra sak, annars gör vi bara en perfekt trappa. Så vi använder Random.Range- funktionen, mellan värden -1 och 2, för att ringa slumpmässiga värden för X och Z. Du kan spela med dessa siffror lite om du vill lura dig.
Skapa en spelmeny
Hittills har vi skapat ett spel där du kan hoppa med ökande höjd och flytta musen runt för att styra riktningen. Problemet är att om du faller av plattformen kommer du bara att falla oändligt - vi måste skriva på en död / spel meny för att börja om.
Så i princip skriver vi ett skript som kontrollerar om vår sfär (karaktär) faller under spelets första plattform . Om så är fallet kommer skriptet att ladda en ny scen.
Vårt första steg är att kontrollera om sfären har fallit under ett visst tröskelvärde. Gå in i GameManager- skriptet som vi gjorde tidigare och titta på if- förklaringen av uppdateringsfunktionen .
Vi ska använda en annan om uttalande här, för att kontrollera om vår sfärs position ligger under -2, 0 enheter av Y-positionen - om det är vår privata funktion gameOver willwell, är den här typen av skript självförklarande.
Den sista biten av skript är den funktion som ska användas för att hantera ett spel över tillstånd och ladda vår spelmeny.
PRO TIPS: Om problemet är med din dator eller en bärbar dator, bör du försöka använda Reimage Plus-programvaran som kan skanna förvaret och ersätta korrupta och saknade filer. Detta fungerar i de flesta fall där problemet uppstått på grund av systemkorruption. Du kan ladda ner Reimage Plus genom att klicka härDet här harkens till Unitys Application class - vi kan ringa LoadLevel- funktionen för att få fram en ny scen, som i detta fall är helt enkelt vår spelmeny - kom ihåg att i princip allt i Unity är nivåer. Huvudmenyer (Startspel - Alternativ - Krediter - Etc) är i grunden bara nivåer / scener med bitar av klickbar text. Slags som Skyrims laddningsskärmar, va? De är bara 3D-modeller i ett tomt världsområde med en laddningsrad.
Under alla omständigheter måste vi skapa en scen genom File> New Scene och ge den namnet Meny samtidigt som det sparas. Sedan ska vi lägga till båda scenerna i byggprocessen. Detta görs genom Arkiv> Bygginställningar .
Vår menyscen ska fortfarande vara öppen, så klicka bara på Lägg till aktuell knapp och lägg till scenen i dina Bygginställningar - gör det igen med nivån scenen.
När vi dör i spelet ska skriptet vi skapade övergå från spelnivå till menyscenen.
Lägg till en startknapp för spelare
Nu kan vi spela spelet i ett testläge, men från och med nu har spelarna ingen möjlighet att starta spelet om vi skulle ladda upp det här spelet någonstans. Så vi måste skapa en spel meny som har en knapp för att starta spelet.
Så byt till spelmenyplatsen och lägg till den här biten till kameran ( i inspektionspanelen, kom ihåg från punkt 1 i denna handledning?).
- Klara flaggor: Solid färg
- Bakgrund: # 000
- Bredd: 200
- Höjd: 60
Detta ger oss en solid svart bakgrund för vår spelmeny - det här görs i RGB-värden, inte hex - så blå skulle vara 001, grön är 010, röd är 100 etc. Jag kan förklara det här för dig, men allt du behöver att göra är Google RGB-väljaren om du vill ha en specifik färg.
När vi fortsätter måste vi lägga till vår knapp för att starta spelet. Detta görs via UI-element - i princip kan vi lägga till UI-element på samma sätt som vi lägger till 3D-element, genom hierarkipanelen . Så fortsätt och skapa en UI-knapp, och du får se några nya element i hierarkipanelen :
- Event
- Duk
- Knapp
- Text
För att bryta ner det här är kanan vår behållare för alla användargränssnitt, och vi kan göra det lyhört ( med responsiv menar jag att skalan ska skärmstorlek, inte lyhörd för att det kommer att svara på frågor du frågar. Det är bäst att lämna AI-skript). Under alla omständigheter kommer vi att ändra knappens position till detta:
- Rect Transform {Pos X: 0, Pos Y: 0, Pos Z: 0}
- Rect Transform {Bredd: 200, Höjd: 60}
För att göra detta lite mer elegant kan du ta bort knappens källbild och ställa in en färg för den. Och om du vill ändra knappens text ändrar du bara Textelementet till något som START GAME, och ger det en teckenstorlek runt 16.
För att göra knappen klickbar lägger vi till en funktion i UIController-skriptet i knappelementet. Lägg bara till den här koden nedan:
Använd denna funktion till knappens inspektörsinställningar, och i inställningarna för knappen (Script), lägger vi helt enkelt till en funktion som körs när spelaren klickar på vår Start-knapp. Så lägg bara till en funktion till On Click () -händelsen och dra / släpp knappen Startspel till ingångsfältet. Slutligen, välj den nyskapade funktionen från UIController-skriptet ( UIController.StartGame)
Vi kan använda denna funktion i knappens inspektionsinställningar . I komponentinställningarna Knapp (Script) kan vi utföra en funktion när en spelare klickar på den. För detta lägger vi till en ny funktion för On Click () -händelsen, genom att klicka på + -ikonen. Nu kan vi dra och släppa knappen själv på inmatningsfältet. Då väljer vi den funktion som vi just skrev från UIController-skriptet (UIController.StartGame).
Så här exporterar / publiceras som ett webGL-webbläsarspel
Öppna byggnadsinställningarna och välj WebGL som målplattform. Klicka nu på knappen Switch Platform och slutligen klicka på Build- knappen och ge ditt spel en titel. Efter det har den byggts kommer den att exporteras / sparas som en .HTML-fil, som kan öppnas / ses i någon webGL-aktiverad webbläsare. Även om du vill publicera ditt spel finns det två sätt att uppnå detta:
- Överför ditt spel till en typ av fil värd (Dropbox, Google Drive, etc), sedan dela länken. Det här är användbart för små demos du vill visa till vänner eller potentiella kunder ( spelportalswebbplatser som antingen köper ditt spel eller skapar en annonsandel med dig).
- Ladda upp ditt spel till en FTP-server som du äger och bädda in den i en
Du kan tweak dessa iframe värden och göra ett antal olika saker med det. Om du till exempel lägger till iframe-taggar som allowfullscreen = true kan ditt webbläsarspel gå fullskärms.
Ytterligare resurser:
Jag rekommenderar att du inte försöker publicera detta spel som vi gjorde i denna handledning till en plattformsspelportal; Du kommer se väldigt dum ut utan att polera upp det lite först.
Ett sätt att göra ditt spel ser mycket bättre ut, särskilt om du inte är särskilt bra på att skapa 3D-modeller, är att använda gratis ( eller betalda) resurser. Här är några bibliotek värda att kolla in:
- Unity Asset Store ( Unitys officiella resursbutik - många gratis alternativ här också)
- Sketchfab: Unity 3D-modeller
- Deviantart: Unity 3D-modeller
- Procedurella världar: Enhets tillgångar
- GameArt2D: Freebies (för det mesta sprite / pixelbaserade tillgångar)
Det finns verkligen massor av resurser där ute, du bara för att vara försiktig och läsa de fina utskrifterna - vissa fria tillgångar får användas i kommersiella projekt, andra låter dig bara utnyttja sina resurser om ditt spel är fritt att spela.
PRO TIPS: Om problemet är med din dator eller en bärbar dator, bör du försöka använda Reimage Plus-programvaran som kan skanna förvaret och ersätta korrupta och saknade filer. Detta fungerar i de flesta fall där problemet uppstått på grund av systemkorruption. Du kan ladda ner Reimage Plus genom att klicka här