Spel

Unity3D självstudie

Unity3D självstudie

Introduktion till Unity 3D

Unity 3D är en kraftfull spelutvecklingsmotor. Det är tvärplattform som gör att du kan skapa spel för mobil, webb, skrivbord och konsol, runt 30 plattformar totalt. Unity 3D har många spännande funktioner, några av dem ges nedan:

Enhetsgränssnitt

Låt oss utforska Unity-editorns gränssnitt, som är konfigurerbara.  Den består av tappade fönster som du kan ordna om efter ditt behov.  Låt oss utforska standardfönsterinställningarna. Här är bilden hur den ser ut

Hierarkifönster

Hierarkifönstret representerar varje objekt i scenen. Det visar hur objekt är länkade till varandra i scenen, så dessa två fönster är relaterade. I hierarkifönstret finns en listruta som heter Skapa. Du kan skapa ett tomt objekt, 3D-objekt, 2D-objekt, ljus, ljud, video, partikelsystem och kameraobjekt mycket enkelt. Hierarkifönstret visas nedan. 'Untitled' är namnet på scenen. Du kan byta namn på det som du vill. Du kan se en rullgardinsikon längst till höger om titeln (scennamn). Genom att klicka på den här rullgardinsmenyn kan du se olika alternativ för Spara scen och Lägg till ny scen.

Scenfönster

Scenfönster är där du skapar din scen. Det är där du kan interagera med dina spelobjekt och modeller. Du kan ändra storlek, omforma och omplacera dina scenobjekt. Det här är fönstret där du börjar arbeta med Unity. Scenvyn kan vara 2D eller 3D beroende på inställningen för ditt projekt. Här är en skärmdump av hur scenfönstret ser ut:

I scenfönstret kan du se en annan flik märkt Skuggad, det är här du kan välja vilken typ av vy du vill ha antingen skuggad eller trådram. Det har många andra alternativ som Diverse, Global illumination, Realtime GI, Baked GI och många andra. Du kan visa till 2D eller 3D genom att använda knappen bredvid Skuggad falla ner. Nästa är växlingsknappen för scenbelysning. På samma sätt en växlingsknapp för scenljud. Nästa är en rullgardinslista för att aktivera sky box, dimma, animerat material och bildeffekter.

Spelfönster

Spelfönstret representerar ditt sista, publicerade spel i spelläge. Det återges från de kameror du använde i ditt spel. I spelfönstret kan du se ett annat verktygsfält som visas nedan i skärmbilden:

Display 1 visar kameran i din spelscen. Som standard är den inställd på Display 1 för huvudkamera. Om du har flera kameror och du vill byta kan du välja från rullgardinsmenyn. Bredvid detta kan du se en rullgardinsmeny för bildförhållanden. Du kan välja enligt din målenhets bildskärm. Nästa kan du se en Skalreglage för att zooma in. Bläddra till höger och undersök mer information om din scen i uppspelningsläge. Nästa är knappen för Maximera vid spel, när du klickar på kommer spelfönstrets storlek att vara maximal i spelläge. Stäng av ljudet växla används för att stänga av / på ljudet. Statistik visar återgivningsstatistik om spelets ljud och grafik.

Project Assets Window

Som namnet visar har tillgångsfönstret alla tillgångar i ditt projekt som du kan använda. Om du importerar något nytt visas det i projektets tillgångsfönster. Projekttillgångsfönstret har två delar, den vänstra panelen och den högra panelen som visas i skärmbilden nedan:

Den vänstra rutan visar den hierarkiska strukturen för projektets tillgångar.  När du klickar på valfri mapp visas detaljerna i den högra panelen. Till exempel i den angivna figuren Prefab mappen klickas i den vänstra panelen så att dess detaljer visas i den högra panelen eftersom den innehåller två spelobjekt. I den vänstra panelen kan du se a Favoriter avsnitt där du kan dra objekt som du vill använda mycket ofta för att undvika tidsavfall när du letar efter dem. Ovanför kan du se en Skapa rullgardinsmeny som gör att du kan skapa ett C # -skript, en mapp, en skuggning, ett GUI-skal, en scen, en prefab, ett material och mycket mer.

Konsolfönster

Konsolfönstret är platsen där du kan se dina fel, varningar och meddelanden. Du kan justera dem genom att klicka på deras växlingsknappar. Det låter dig också rensa alla fel, varningar och meddelanden. Du kan pausa fel under en viss tid. Här kan du se i följande bild

Listrutan längst upp till höger har alternativ för Editor Logg och Stack Trace Logging.

Inspektörsfönster

Inspektörsfönster är ett av de mest intressanta och användbara fönstren för redaktören. Det är platsen där du kan redigera alla egenskaper för det valda spelobjektet. Varje spelobjekt har sin egen typ så deras egenskaper kommer att vara olika och inspektörens fönster kan variera. Tillgångar, skript och spelobjekt varierar i olika egenskaper. Låt oss se egenskaperna för en kub i inspektörsfönstret. Här är bilden:

Du kan byta namn på ditt spelobjekt genom att bara klicka på föregående namn och skriva ett nytt. Därefter ser du omvandlingsavsnittet där du kan justera position, rotation och skalning av ditt valda spelobjekt. I det sista ser du ett knappnamn som Lägg till komponent, klicka på den för att lägga till nya komponenter i ditt spelobjekt, till exempel om du vill bifoga ett skript, klicka bara på lägg till komponent och skriv ditt skriptnamn.

Verktygsfält

Sist är verktygsfältets flik, den har många användbara funktioner. Den innehåller några grundläggande verktyg för att manipulera scenvyn och objekt. I mitten finns knappar för uppspelning, paus och stegkontroll. De följande två knapparna visar ditt Unity-moln och ditt Unity-konto. Här är figuren hur det ser ut:

Komma igång med enhet

Låt oss börja skapa ett nytt projekt i Unity eftersom det är dags att leka med det vi har lärt oss. Dubbelklicka på Unity-ikonen följande fönster visas:

Stiga på Projektnamn, välj en arbetsplats Plats och välj sedan typ av projekt antingen 2D eller 3D. Klicka på Skapa projekt.

Som standard ser du en scen utan namn som innehåller en huvudkamera och riktat ljus i scenen. Låt oss börja skapa en miljö.

Byggnadsmiljö

Skapa först ett plan genom att klicka på Skapa -> 3D-objekt och välj sedan Plan. Alternativt kan du skapa den genom att klicka på GameObject -> Game Object och välj sedan Plan. Gå till hierarkifönstret och klicka på plan spelobjekt. Gå nu till inspektörsfönstret och byt namn på det som Jord. Justera nu transformationsvärdena så att detta plan ser ut som en rak väg. Skala bara X till 6 och Z till 50. Här är bilden hur den ser ut

Ladda ner en vägstruktur och applicera den på markobjektet. Skapa ett mappnamn som Texture. Dra nedladdad vägstruktur till Textures mapp. Välj nu Jord och dra vägstruktur i scenvyn. Här är bilden hur den ser ut

Det här är strukturen jag laddade ner

Efter att ha applicerat textur på marken klickar du på marken och ställer in kakel i inspektörsfönstret. Så här ställer jag in det.

Nu har du skapat en vägmodell, låt oss skapa en bollmodell i enhet.

Gå till Skapa -> 3D-objekt och välj sedan Sfär, du kommer att se ett sfärföremål i scenfönstret. Välj det och gå till inspektörsfönstret för att byta namn på det Boll. Justera nu transformationsvärdena i enlighet med detta. Skala det bara till 5 längs alla tre axlarna och flytta det till mitten av vägen. Så här ser det ut

Skapa nu ett staket eller en mur runt vägen.

Gå till Skapa -> 3D-objekt och välj sedan Kub. Välj det och byt namn på det Vägg1. Gå till inspektörsfönstret och ställ in transformationsvärden så att det ser ut som en mur runt vägen. Så här ser det ut:

Se dessa transformationsvärden för Vägg1. Skala Y till 6 och Z till 500. Justera sedan dess position så att den kommer i hörnen på vägen.

Sök nu efter en väggstruktur, ladda ner den och kopiera till Textur mapp i tillgångar. Dra väggstruktur till väggen i scenfönstret. Justera bearbetningen så att den ser snygg och smidig ut. Jag justerade tegelplattan som X till 50 och Y till 1.5. Efter att ha justerat kakel så ser det ut

Det här är strukturen jag använde för vägg

Vi har skapat vägg för ena sidan av vägen. Gör nu samma sak för andra sidan vägen. Istället för att gå igenom hela processen kan vi bara kopiera Vägg1 och byta namn på det till Wall2.

Välj Vägg1 i hierarkifönstret och högerklicka sedan och välj sedan Duplicera alternativ. Det skapar ett annat spelobjekt med samma storlek och transformationsvärden. Klicka på Vägg1 (1) och byta namn på det till Wall2. Justera nu positionen så att den kommer till det andra väghörnet.

Se följande bild hur cool det ser ut

Mina positionsvärden för Wall2 är X till -29.6 Y till 2.6 och Z till 2.6.

Skapa nu ett material för Boll. Gå till Project-fönstret och skapa en mapp genom att högerklicka på musen och välj sedan Mapp. Namnge det som Material. Högerklicka på musen igen och skapa ett material. Namnge det som röd boll. Välj färg på materialet i inspektörens fönster. Gå till Huvudkartor och välj Albedofärg till röd. Öka metallstrukturen genom att bläddra till höger. Dra det här materialet till Boll i scenvyn. Så här ser det ut

Så här ser material ut:

Så vi är klara med vår miljöutveckling. Nu är det dags att göra lite kodning. För detta måste vi skapa ett manus.

Skript i enhet

För att implementera dina egna spelfunktioner och för att kontrollera spelets beteende tillhandahåller Unity som en skriptmekanism. Du kan skriva ditt eget skript för den önskade utgången av spelet. Med dessa skript kan du utlösa spelhändelser, ändra komponentens egenskaper och svara på användarens ingångar. I grund och botten stöder Unity två olika programmeringsspråk för skriptsyfte, det ena är C # och det andra är JavaScript. Andra än dessa två språk många andra .NET-språk kan också användas med Unity. Skript kallas beteendekomponent i Unity.

Skapa ett manus

Låt oss börja skapa ett Unity-skript. Gå till tillgångsfönstret och skapa en ny mapp med namnet Skript (du kan hoppa över att skapa nya mappar för varje ny typ av tillgång men det är god praxis att hålla saker organiserade). Så här ser mitt tillgångsfönster ut nu:

Öppna nu Skript mapp, högerklicka och gå sedan till Skapa och välj C # manus. Byt namn på skript till Rörelse. Vi skapar detta manus för att flytta och rulla bollen på vägen. För tillfället är bollen stillastående, gör ingenting, låt oss skapa lite rörelse i den.

Dubbelklicka på Movement-skriptet som öppnas i Mono Develop. Om ditt skript är ett monobeteende kommer du att se en förskriven kod som den här

använder System.Samlingar; använder System.Samlingar.Generisk; använder UnityEngine; public class MovementScript: MonoBehaviour // Använd detta för initialisering ogiltigt Start ()  // Uppdatering kallas en gång per ram ogiltig uppdatering ()  

Du kan se två funktioner Start () och Update ().

Start(): Startfunktionen används för att initiera variabler och objekt. Det anropas bara en gång när skriptet är aktiverat precis innan någon annan uppdateringsfunktion ringer.

Uppdatering(): Det är en mono beteende funktion, det kallas en gång i varje ram.

Annat än dessa två finns det många andra monobeteendefunktioner, till exempel awake (), fixedUpdate (), lateUpdate () etc.

För att flytta bollen på vägen måste du först och främst göra den till en stel kropp (det är en idealisk fast kropp där deformation försummas). Välj Boll i hierarkifönstret och klicka på Lägg till komponent knappen i inspektörsfönstret. Skriv styv kropp och tryck Stiga på. En stel kropp kommer att fästas vid Boll. Gå nu till skriptet och skapa en privat variabel av typen Styv kropp. Tilldela nu den styva delen av bollen till den här variabeln du just skapade i manuset.

privat Rigidbody rb; rb = GetComponent (); 

Skriv nu lite kod för rörelsen för denna styva kropp. Vad är tanken? Bollen ska röra sig när jag trycker på piltangenterna på tangentbordet. Den ska gå framåt när du trycker på upp-knappen, bakåt när ned-knappen trycks in och så vidare.

Så ingången kommer från tangentbordet, hur ska jag få den här inmatningen? Unity's Input-klass har ett funktionsnamn GetAxis (), för att returnera värdet på den virtuella axeln som identifierats av axelnamnet. Skapa två variabler en för x-axel och en för y-axelinmatning. Så här ska det vara

float moveHorizontal = Inmatning.GetAxis ("Horisontell"); 

Skapa nu en Vector3-variabel för att få rörelsevärden.

Vector3-rörelse = ny Vector3 (moveHorizontal, 0.0f, moveVerticle); 

Den första parametern är värdet på x-axeln, den andra är värdet på y-axeln och den tredje är värdet på z-axeln. Eftersom bollen inte kommer att röra sig i riktning mot y-axeln så tilldela den noll. Slutligen lägg till denna rörelse i styv kropp och multiplicera med ett konstant antal för hastighet eller skapa en annan variabel för hastighet. Se den fullständiga koden nedan

använder System.Samlingar; använder System.Samlingar.Generisk; använder UnityEngine; public class Movement: MonoBehaviour public float speed; privat Rigidbody rb; // Använd detta för initialisering void Start () rb = GetComponent ();  // Fixad uppdatering anropas efter fast antal ramar ogiltiga FixedUpdate () float moveHorizontal = Input.GetAxis ("Horisontell"); float moveVerticle = Ingång.GetAxis ("Horisontell"); Vector3-rörelse = ny Vector3 (-1 * moveHorizontal, 0.0f, -1 * moveVerticle); rb.AddForce (rörelse * hastighet);  

Eftersom hastighet är en offentlig variabel så kan du tilldela värde i inspektörsfönstret. Bifoga detta skript till bollen genom att dra det till inspektörsfönstret eller genom att trycka på Lägg till komponent knapp. Tryck på uppspelningsknappen och testa din kodning antingen bollen rör sig eller inte.

Ställa in kamera

Det sista du kommer att märka är när du trycker på framåtknappen och bollen börjar röra sig går den ut ur kameran eftersom kameran är stillastående. Vad ska vi göra? Vi borde också flytta kameran? Ja det är det enklaste att göra. Gör kamerans barn till bollen genom att dra huvudkameran till bollen.

Slutsats

Detta var en grundläggande introduktionshandledning där du lärde dig många intressanta funktioner, miljöbyggande och skript i Unity. Tveka inte, börja skapa ditt första spel med Unity idag och njut!

OpenTTD vs Simutrans
Att skapa din egen transportsimulering kan vara rolig, avkopplande och extremt lockande. Det är därför du måste se till att du testar så många spel so...
OpenTTD-handledning
OpenTTD är ett av de mest populära affärssimuleringsspelen där ute. I det här spelet måste du skapa en underbar transportaffär. Du kommer dock att bör...
SuperTuxKart för Linux
SuperTuxKart är en fantastisk titel som är utformad för att ge dig Mario Kart-upplevelsen gratis på ditt Linux-system. Det är ganska utmanande och rol...