Hej allihopa! Hoppas att ni har det bra, var ni än befinner er. Jag hade i detta inlägg tänkt att jag skulle börja lära er litetgrand om grunderna i spelprogrammering i Unity. Först och främst så vill jag snacka om elefanten i rummet; begreppet ’programmering’ kan vara lite avskräckande för vissa. En massa olika abstrakta röriga saker som inte riktigt hänger ihop. Men jag är helt övertyga om att alla kan lära sig att programmera, ja även du som är mest skeptisk!

När vi sysslar med programmering så behöver vi känna till att det finns olika språk. Precis som det finns människor emellan. Nu pratar jag inte om Engelska, som i stort sätt alla programmeringsspråk utgår ifrån, utan programmeringsspråk. Alla programmeringsspråk gemensamt handlar i stort sett om att ge datorn olika instruktioner för vad den ska göra, exempelvis om något inträffar så kan man säga att datorn ska göra si, och om något annat inträffar så ska den göra så. I grunden är programmeringsspråken väldigt lika varandra på det sättet – lite som dialekter kan man säga. Vi säger ungefär samma saker, med en del avvikelser – och i de flesta sammanhang, när man har lärt sig språket så förstår man även det mesta i dialekterna.

Unity använder sig av ett språk som kallas för C#

Språket ’Cee Sharp’ består av en mängd olika instruktioner (som jag nämnde tidigare) – och flera av dessa instruktioner har förenklats för att passa till spelmotorn Unity. Det betyder att det svåraste med spelprogrammering, att börja från den djupaste grunden redan är avklarat. Unity skickar med oss en mängd olika instruktioner som är just anpassade för att göra spel, och det vi ska lära oss är hur vi kan göra våra idéer verkliga genom dessa instruktioner.

Att få en kloss att flytta på sig

Tänk dig ett bord, på detta bord ligger en kloss. Låt oss säga att vi vill göra det mest grundläggande, att få denna kloss att flytta på sig när man trycker på en viss tangent på tangentbordet.

För att göra detta så behöver vi lära oss några instruktioner, nämligen Input.GetButtonDown som lyssnar efter ett knapptryck. Ordningen på instruktionen är alltså Input, med en punkt efteråt – punkten skiljer mellan huvudinstruktionen (att spelet ska lyssna efter någon slags interaktion från spelaren) och GetButtonDown som specificerar vad för slags interaktion vi ska lyssna efter, i detta fallet ett knapptryck (ButtonDown).

Man skriver detta på följande vis:

if(Input.GetButtonDown("Fire1")) {

}

Notera att vi nu har placerat instruktionen i en så-kallad villkorssats, det i praktiken betyder att vi säger OM man trycker på en knapp SÅ ska något hända. Nu är det dock det engelska språket vi använder, därför blir det IF istället för OM, och vi behöver inte skriva ut THEN, utan istället används klammerparenteserna { } – allt som står innanför dessa är vad som ska hända när någon har tryckt på knappen. Just nu, ingenting.

Som du säkert har märkt, så använder vi flera (fyra!) parenteser ovanför. Dessa används för att särskilja de olika instruktionerna. Exempelvis:

if( )

Dessa parenteser talar om var någonstans OM-satsen börjar och slutar, medan:

Input.GetButtonDown("Fire1")

Dessa parenteser talar om vilken knapp vi ska vänta på. Inte vilken knapp somhelst utan den som heter ”Fire1”. Om vi har en joystick eller handkontroll så är det den knapp vi ”skjuter” med. På ett tangentbord är det som standard CTRL-knappen längst nere till vänster.

Verkar det här svårt? Inte särskilt, vad? Med hjälp av det här så kan vi alltså välja att skapa kontroller för vårt spel, och sedan tala om vad som ska hända när vi trycker på dessa kontroller.

Okej, nivå två!

if(Input.GetKey("RightArrow") {

}

Vad tror du att koden här ovanför gör för något?

GetKey är lite annorlunda från GetButtonDown på så vis att vi nu väntar på en tangent på tangentbordet ska tryckas ner. I det här fallet piltangenten som pekar åt höger.

Nu kör vi nivå tre!

transform.Translate(Vector3.forward * Time.deltaTime);

transform.Translate() gör så att ett föremål förflyttar sig i en viss riktning, denna instruktion översätter alltså tangentbordstrycket till en rörelse. Vi måste innanför parentesen tala om VILKEN rörelse vi vill göra.

I exemplet ovanför använder vi oss av något som kallas för Vector3. Vector3 talar om för oss att det objekt vi vill förflytta befinner sig i ett tredimensionellt rum. Det kan med andra ord flytta sig i tre axlar. X, Y och Z – eller framåt, bakåt, uppåt, nedåt, hitåt och ditåt (i djupled).

Hade vi haft ett tvådimensionellt spel så hade det bara gått att välja två axlar, med Vector2.

Istället för att specificera med abstrakta X,Y och Z, så översätter vi istället detta till det lite mer konkreta, exempelvis up, down, forward, backward, och så vidare. Så i exemplet ovanför så kommer föremålet att röra sig framåt.

Det var allt för den här gången. Du har i denna lilla korta nybörjarguide fått bekanta dig lite mer kring några väldigt grundläggande instruktioner i Unity-programmering. I nästa del ska vi prata om vad Time och deltaTime gör! Ses då!

Published
Categories unityprogrammering
Views 228