Skip to content

Commit

Permalink
So far so good
Browse files Browse the repository at this point in the history
  • Loading branch information
Daxode committed Jul 9, 2024
1 parent c7f406c commit 3cc2e5f
Show file tree
Hide file tree
Showing 6 changed files with 150 additions and 3 deletions.
Binary file added ~Documentation/images/Unity_Kbm2Suo9W9.gif
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added ~Documentation/images/VariableIInspector.gif
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added ~Documentation/images/create-cube.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
70 changes: 68 additions & 2 deletions ~Documentation/topics/Opgave-1-Krop-og-kode.md
Original file line number Diff line number Diff line change
Expand Up @@ -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)
83 changes: 82 additions & 1 deletion ~Documentation/topics/Opgave-2-Variabler.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,84 @@
# Opgave 2 (Variabler)

Start typing here...
## 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

0 comments on commit 3cc2e5f

Please sign in to comment.