diff --git a/~Documentation/images/Unity_Kbm2Suo9W9.gif b/~Documentation/images/Unity_Kbm2Suo9W9.gif new file mode 100644 index 0000000..5045425 Binary files /dev/null and b/~Documentation/images/Unity_Kbm2Suo9W9.gif differ diff --git a/~Documentation/images/VariableIInspector.gif b/~Documentation/images/VariableIInspector.gif new file mode 100644 index 0000000..a83dda5 Binary files /dev/null and b/~Documentation/images/VariableIInspector.gif differ diff --git a/~Documentation/images/create-cube.png b/~Documentation/images/create-cube.png new file mode 100644 index 0000000..bf075e0 Binary files /dev/null and b/~Documentation/images/create-cube.png differ diff --git a/~Documentation/images/writerside64_nU9hKH4rE9.gif b/~Documentation/images/writerside64_nU9hKH4rE9.gif new file mode 100644 index 0000000..c01e535 Binary files /dev/null and b/~Documentation/images/writerside64_nU9hKH4rE9.gif differ diff --git a/~Documentation/topics/Opgave-1-Krop-og-kode.md b/~Documentation/topics/Opgave-1-Krop-og-kode.md index 6e1f300..06edbcf 100644 --- a/~Documentation/topics/Opgave-1-Krop-og-kode.md +++ b/~Documentation/topics/Opgave-1-Krop-og-kode.md @@ -27,5 +27,71 @@ Når i har åbnet projektet, vil i se Unity brugerfladen. Her er nogle af de vig ## Spiller Objektet -I jeres scene vil i se et objekt kaldet "Player". -Dette er jeres spiller objekt. I kan flytte spilleren ved at klikke på objektet og trække det rundt i scenen. +I jeres scene vil i kunne højre klikke og vælge "Create Cube" for at lave et nyt objekt. Dette objekt vil være jeres spiller objekt. +I kan flytte spilleren ved at klikke på objektet og trække det rundt i scenen. + +![create-cube.png](create-cube.png) + +## Kode + +Lav et script til spilleren ved at klikke på spilleren i hierarkiet og derefter klikke på "Add Component" i inspektoren. +Vælg "New Script" og kald det "PlayerScript". Dobbeltklik på scriptet for at åbne det i Rider. + +![Unity_Kbm2Suo9W9.gif](Unity_Kbm2Suo9W9.gif) + + +I bør se en stump kode der ser sådan ud: +```C# +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +public class PlayerScript : MonoBehaviour +{ + // Start is called before the first frame update + void Start() + { + + } + + // Update is called once per frame + void Update() + { + + } +} +``` + +Her er der to metoder, `Start` og `Update`. +- `Start` bliver kaldt når spillet starter. +- `Update` bliver kaldt en gang hver gang der tegnes et billede på skærmen. (en gang per frame). + + +## Start +Hvis vi skriver `print("Jeg er kaldt en gang")` i `Start` metoden, vil vi se "Jeg er kaldt en gang" i konsollen når spillet starter. +```C# +void Start() +{ + print("Jeg er kaldt en gang"); +} +``` + + +## Update +Hvis vi skriver `print("Jeg er kaldt meget")` i `Update` metoden, vil vi se "Jeg er kaldt meget" i konsollen en masse gange. En gang per frame for at være nøjagtig. +```C# +void Update() +{ + print("Jeg er kaldt meget"); +} +``` + +## Opgave 1 +Her er jeres første opgave: +1. Lav endnu et objekt som kan bruges om fjende, med samme komponenter som spilleren +2. Få fjenden til at skrive “hej, jeg er ond” en gang i konsollen + +Når i er færdige med at gentage hvad vi har lavet og lave opgaven, bør det se ud som under. +I er velkommen til at læse foran men så kan det hurtig blive kedeligt. + +![writerside64_nU9hKH4rE9.gif](writerside64_nU9hKH4rE9.gif) \ No newline at end of file diff --git a/~Documentation/topics/Opgave-2-Variabler.md b/~Documentation/topics/Opgave-2-Variabler.md index d2f156c..e316129 100644 --- a/~Documentation/topics/Opgave-2-Variabler.md +++ b/~Documentation/topics/Opgave-2-Variabler.md @@ -1,3 +1,84 @@ # Opgave 2 (Variabler) -Start typing here... \ No newline at end of file +## Variabler og typer +Når man skriver kode får man ofte brug for at gemme nogle værdier. Disse gemmepladser kalder vi variabler. +I C# ville en variabel kunne se sådan ud: +```C# +int alder = 10; +``` +I koden ovenfor har vi lavet en variabel `alder` som er af typen `int` (integer) og sat den til at være 10. +Man skal altså læse det som "alder er lig med 10". Eller: +``` +type variabelNavn = værdi; +``` + +Men der findes mange flere typer end `int`. Her er nogle af de mest brugte: +- `int` er heltal (f.eks. kan man skrive `int alder = 10;`) +- `float` er decimaltal (f.eks. kan man skrive `float vægt = 10.5f;`) +- `string` er tekst (f.eks. kan man skrive `string navn = "Mikkel";`) +- `bool` er sandt/falsk (f.eks. kan man skrive `bool erVoksen = true;`) + +I Unity er der også nogle specielle typer som er specifikke for Unity: +- `Vector3` er en 3D vektor +- `GameObject` er et Unity objekt +- `Transform` er en position, rotation og skala + +Disse typer kommer vi snart til at bruge. Men vi kommer ikke selv til at fokusere på at lave vores egne typer (endnu). Men vigtigt at huske at det også er en mulighed. +En anden vigtig detalje er at man ikke behøver at sætte en værdi. Man kalder dette for en variabel deklaration. +```C# +int alder; +``` +Men det jo ikke så sjovt at have en variabel uden at vide hvad den indeholder. Så det er en god ide at sætte en værdi med det samme. + +## Men hvor skal variablerne være? + +Variabler kan være i mange forskellig steder. Hvis vi husker første lektion, så har vi en `Start` og en `Update` metode. +- Hvis vi placerer en variabel i `Start` metoden, så vil den kun være tilgængelig i `Start` metoden. +- Hvis vi placerer den i `Update` metoden, så vil den kun være tilgængelig i `Update` metoden. +- Hvis vi placerer den udenfor begge metoder, så vil den være tilgængelig i begge metoder. + +```C# +public class PlayerScript : MonoBehaviour +{ + int alder = 10; + + // Start is called before the first frame update + void Start() + { + int jegVirkerKunIStart = 20; + print(alder + jegVirkerKunIStart); // Skriver 30 i konsollen + } + + // Update is called once per frame + void Update() + { + int jegVirkerKunIUpdate = 42; + print(alder + jegVirkerKunIUpdate); // Skriver 52 i konsollen + } +} +``` + +Hvis i bemærker, så kan i se at reglen er at variablerne er tilgængelige inde mellem hver `{}`. Så fordi `JegVirkerKunIStart` er inde i `Start` metoden's `{}`, så kan den ikke tilgås i `Update` metoden. + +## Tilgængelighed i editoren +I C# kan man definere en variable der lever udenfor en metode som `public`. Det betyder at andre steder kan tilgå den. Så kigger vi på koden: +```C# +public class PlayerScript : MonoBehaviour +{ + public int alder = 10; +} +``` +Så har vi altså lavet variablen `alder` til at være `public` så andre kan få værdien. I Unity betyder det også at den kan fås fat i fra Editoren. Så vi selv kan justere den. + +![VariableIInspector.gif](VariableIInspector.gif) + +## Kommentarer +I koden ovenfor har vi også brugt noget der hedder kommentarer. Kommentarer er tekst i koden som ikke bliver kørt. De er der for at forklare hvad koden gør. +I C# skriver `//` for at lave en kommentar. Hvor at alt efter `//` vil blive ignoreret af computeren. +```C# +// Dette er en kommentar +``` + +## Opgave 2 +1. Lav en variabel til at styre spillerens hastighed og gør så man kan tilgå den i editoren +2. Lav en variabel til at håndtere cooldown af skud og gør så man kan tilgå den i editoren