Skip to content

Commit

Permalink
Merge branch 'main' of https://github.com/UNFDanmark/GDC2024
Browse files Browse the repository at this point in the history
  • Loading branch information
MegetSkuffet committed Jul 10, 2024
2 parents da7921a + 41c2577 commit f84fc96
Showing 1 changed file with 38 additions and 3 deletions.
41 changes: 38 additions & 3 deletions ~Documentation/topics/Opgave-1-Instantiate.md
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,6 @@ Tilbage i vores script kan vi nu i `Update`-funktionen kalde `Instantiate` med `
void Update()
{
Instantiate(bullet);

}
```
Hvis vi nu starter spillet kan vi se at der kommer massere af patroner, men de starter alle der hvor den originale patron var sat.
Expand Down Expand Up @@ -66,9 +65,45 @@ if (Input.GetKeyDown(KeyCode.Space))

## Physics Layer
Som man kan se når man starter spillet, så støder de patroner som man skyder ind i spilleren selv. Til at løse det problem
gør vi brug af det som Unity kalder Physics layers. Disse layers dikterer hvad der kan kollidere med hvad
gør vi brug af det som Unity kalder Physics layers. Disse layers dikterer hvad der kan kollidere med hvad, så vi skal bruge
nogle layers til at repræsentere vores spiller og patroner. Man kan tilføje nye physics layers ved at vælge et objekt og
klikke på "Add layer..." knappen i Layer dropdown menuen under objektets navn.

## Timer
*img with creation of player & bullet layers*

Når man har lavet lagene skal man huske at tildele dem til ens `gameObjects`, det gør man samme sted som hvis man skulle lave nye lag.

Som vist herunder kan vi i project managerens Physics sektion deaktivere kollisioner mellem Player og Bullet lagende.

*gif unchecking the collision mask between player & bullet*


## Cooldown
Vi tilføjer en colldown periode mellem vores skud, således at der skal være gået mindst en rum tid fra at man har skudt
til at man kan skyde igen. Til vores cooldown skal vi bruge to variable til at at holde styr på 1) hvor lang cooldownen
er go 2) hvor lang tid der er tilbage af cooldownen efter man har skudt.

```C#
public float cooldownTime = 0.2f;
float leftoverCooldown;
```
Inde i den `if`-statement vi satte rundt om `Instantiate` kan vi nu sætte `leftoverCooldown` til at være lig med `cooldownTime`
Desuden skal vi ændre på betinglesen for `if`-statementet således at vi kun kan skyde når `leftoverCooldown` er mindre eller lig 0 som vist herunder.

```C#
if (Input.GetKeyDown(KeyCode.Space) && leftoverCooldown <= 0)
{
Instantiate(bullet,transform.position,quaternion.identity);
leftoverCooldown = cooldownTime;
}
```

Nu kan man, hvis man starter spillet, kun skyde en enkelt gang, fordi vi aldrig gør `leftoverCooldown` mindre. Heldigvis
kræver det kun en enkelt linje kode før `if`-statementet hvor vi gør variablen mindre.
```C#
leftoverCooldown = leftoverCooldown - Time.deltaTime;
```
`Time.deltaTime` er den mængde af tid der er gået siden sidste frame.

## Opgave 1
- Slå “GameObject.Destroy()” op i Unity's dokumentation
Expand Down

0 comments on commit f84fc96

Please sign in to comment.