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
Omonom47 committed Jul 10, 2024
2 parents f9e54c0 + f84fc96 commit 4e61210
Show file tree
Hide file tree
Showing 5 changed files with 93 additions and 3 deletions.
3 changes: 3 additions & 0 deletions .idea/.gitignore

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

8 changes: 8 additions & 0 deletions .idea/GDC2024.iml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

8 changes: 8 additions & 0 deletions .idea/modules.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

6 changes: 6 additions & 0 deletions .idea/vcs.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

71 changes: 68 additions & 3 deletions ~Documentation/topics/Opgave-3-Random-og-NavMesh.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,17 +2,82 @@

## NavMesh

.. navmesh surface .. navmesh agent ..
.. navmesh surface ..

For at kunne skabe nogle mere spændende fjender, vil vi gerne have de kan bevæge sig.
Til det bruger vi NavMesh. Først skal vi fortælle unity hvorhenne vores enemy må og kan gå.
Til det formål giver unity os komponentet **NavMeshSurface**. Lad os tilføje den til vores plane.

**INDSÆT BILLEDE AF NAVMESHSURFACE MENU**

Her er der en del indstillinger at lege rundt med, men for nu trykker vi på Bake knappen.

**INDSÆT BILLEDE AF BAKED OVERFLADE**

Det blå område der tegner sig er vores navmeshsurface. Det er det område vores enemy kan gå på.

.. navmesh agent ..
Men før vores enemy kan finde rundt skal vi også lige fortælle vores enemy object at den kan gå.
Her giver vi den komponetet **Nav Mesh Agent**. Den fotæller unity at vores enemy object skal kunne navigere på en navmesh surface,
som den vi lige har lavet.

**INDSÆT BILLEDE AF NAV MESH AGENT MENU HER EVENTUELT**.

Vi skal dog stadig fortælle den hvor den skal gå hen. Det kan vi heldigvis nemt gøre med **SetDestination()** funktionen.
SetDestination tager imod en Vector3 position, som for eksempel vores spillers position.
I vores enemy script skal vi hive fat i vores **Nav Mesh Agent**, brug enten **GetComponent<NavMeshAgent>()**,
eller lav en public NavMeshAgent og drag and drop den i Unity.
Vi skal have en reference til vores player, her skal vi igen gøre brug af **Tags**, heldigvis har unity allerede et player tag.
Giv vores playerobject player tagget og brug **FindWithTag("Player")**.

**INDSÆT BILLEDE AF AT VÆLGE PLAYER TAG PÅ PLAYER OBJECT**

```c#
public NavMeshAgent agent;
private GameObject player;

void Start(){
player = GameObject.FindWithTag("Player");
}

void Update(){
agent.SetDestination(player.transform.position);
}
```
... Enemy spawner ...

**INDSÆT GIF AF ENEMY GÅR MOD PLAYER**

## Random
Det er jo ikke så spændende at der kun er en fjende.
Til det laver vi et enemySpawner object. Siden det ikke er noget vi skal kunne se, giver det mening at lave et empty object.

```C#
**INDSÆT BILLEDE AF MENU MED MUS PÅ EMPTY OBJECT**

Så laver vi et enemySpawnerScript på vores enemySpawner.
I det skal vi have en reference til det object vi gerne vil spawne, altså vores enemyobject.
Som med vores bullet kan vi spawne flere med **Instantiate()**.
```c#
public GameObject spawnObject

void Update(){
Initiate(spawnObject, transform.position, Quaternion.identity);
}
```

**INDSÆT GIF AF SPAWNING FJENDER**

Det ville dog være kedeligt hvis de alle spawnede det sammes sted hver gang.
Så hvad nu hvis vi generede nogle tilfælge positioner til vores fjender.
Her kan vi bruge **Random.Range** der giver os et tilfældigt tal mellem 2 tal vi vælger.
Vi starter småt med et tal mellem -5 og 5.
```c#
Vector3 spawnPosition = transform.position;
spawnPosition.x = spawnPosition.x + Random.Range(-5, 5);
spawnPosition.z = spawnPosition.z + Random.Range(-5, 5);
Instantiate(prefab, spawnPosition, Quaternion.Identity);
```

**GIF AF SPAWN AF FJENDER I TILFÆLDIG POSITION**.
Det er vigtig at huske at højre side af `=` tegnet bliver kørt først. Så selvom:
```C#
val = val + 1;
Expand Down

0 comments on commit 4e61210

Please sign in to comment.