🚀 Unity Game Development Tutorial: Space Shooter

Klik på et hvilket som helst billede for at se det i fuld størrelse.

Del 1: Projektopsætning og Spillerbevægelse (Trin 001–031)

Nr. Handling Forklaring
001Opret Nyt 2D Projekt (Start)Start **Unity Hub** og vælg **New Project**. Skærmbillede af Unity Hub, hvor 'New Project' er valgt.
002Vælg 2D TemplateVælg en **2D Template** for at skabe projektet. Valg af 2D Template i Unity Hub.
003Tomt ProjektViser det nyoprettede, tomme Unity projekt. Tomt Unity Editor-vindue.
004Download og Importer Custom Package (Menu)Download UnityPakken Her: spaceinvaders_newInputer.unitypackage
Og så
Gå til **Assets** > **Import Package** > **Custom Package...** Unity-menuvalg for import af pakke.
005Vælg Package FilÅbner filvælgeren, hvor `.unitypackage`-filen skal vælges. Filvælger, der viser valgt Unity package-fil.
006Bekræft ImportKlik **Import** i det pop-up vindue, der viser alle de medfølgende assets. Import-vindue med liste over assets.
007Assets ImporteretBekræfter, at alle assets (Scripts, Prefabs m.m.) nu er synlige i Project-vinduet. Unity Project-vinduet med importerede mapper.
008Placer Spaceship i ScenenTræk **`spaceship`**-prefab'en fra Project-vinduet over i **Hierarchy**-vinduet. Træk spaceship prefab til Hierarchy.
009Forbered til RigidbodyKlik **Add Component** i Inspector. Knappen 'Add Component' i Inspector.
010Tilføj Rigidbody 2DTilføj komponenten **Rigidbody 2D**. Rigidbody 2D valgt fra listen over komponenter.
011Rigidbody TilføjetViser Rigidbody 2D komponenten tilføjet i Inspector. Rigidbody 2D-komponenten i Inspector.
012Indstil KinematicSæt **Body Type** fra *Dynamic* til **Kinematic** for at styre bevægelse via script. Body Type sat til Kinematic.
013Forbered Player InputKlik **Add Component** og søg efter Input. Søgning efter Input i Add Component.
014Tilføj Player InputTilføj komponenten **Player Input**. Player Input valgt fra listen.
015Tildel Actions Asset (1)Player Input er tilføjet. Skal tildeles actions asset. Player Input-komponent vist.
016Tildel Actions Asset (2)Træk **`PlayerControls`**-asset'et ind i **Actions**-feltet. PlayerControls asset tilføjet.
017Identificer BevægelsesscriptViser `moveSpaceshipScript` i Scripts-mappen. Scripts-mappen med moveSpaceshipScript.
018Tilføj Bevægelsesscript (1)Træk **`moveSpaceshipScript`** over på `spaceship`-objektet i Hierarchy. Træk script til spaceship-objektet.
019Script TilføjetViser `moveSpaceshipScript` i Inspector-vinduet. moveSpaceshipScript i Inspector.
020Skift Input Behavior (1)Player Input's **Behavior** skal ændres. Behavior-feltet i Player Input.
021Skift Input Behavior (2)Sæt **Behavior** til **Invoke Unity Events**. Behavior sat til Invoke Unity Events.
022Kable `Move` Action (1)Udvid Events > Move og tryk '+'.

HVIS Player EVENTET IKKE ER SYNLIGT!:
prøv at vælge et andet objekt og så vælge Spaceship igen, for at få den til at opdatere.

Events > Move sektionen i Player Input.
023Kable `Move` Action (2)Tilføj `spaceship`-objektet til det nye slot. Nyt Event slot oprettet.
024Kable `Move` Action (3)Vælg funktionen. Vælger funktionsmenuen.
025Kable `Move` Action (4)Gå til `moveSpaceshipScript`. moveSpaceshipScript i menuen.
026Kable `Move` Action (5)Vælg **`OnMove`** funktionen. OnMove funktionen valgt.
027Kable `Move` Action (6)Bekræfter, at `OnMove` er kablet. OnMove kablet.
028Test Bevægelse (Play)Klik på **Play**-knappen for at teste. Tryk på Play knappen.
029Bevægelse i gangViser spillet, der kører (rumskibet bevæger sig). Spil kører i editor.
030Stop Test (Stop)Klik på **Stop**-knappen for at vende tilbage til editoren. Tryk på Stop knappen.
031Juster HastighedSæt `Movement Speed` i `moveSpaceshipScript` til en passende værdi (f.eks. **0.02**). Juster Movement Speed i Inspector.

Del 2: Affyrings-Mekanik (Trin 032–040)

Nr. Handling Forklaring
032Tilføj AffyringsscriptTræk **`fireBulletsScript`** over på `spaceship`-objektet. fireBulletsScript tilføjet til spaceship.
033Kable `Fire` Action (1)Opret lytter under **Events** > **Fire** og tryk '+'. Events > Fire sektionen.
034Kable `Fire` Action (2)Tilføj `spaceship`-objektet og vælg funktionen. Vælger funktion under Fire.
035Kable `Fire` Action (3)Vælg funktionen **`OnFire`** fra `fireBulletsScript`. OnFire funktionen kablet.
036**FEJL: Test uden Prefab**En test (`Play`) udløser en `UnassignedReferenceException` (scriptet mangler projektil-prefab'en). Konsolfejl: UnassignedReferenceException.
037**Stop Test (4)**Klik på **Stop**-knappen for at rette fejlen. Tryk på Stop knappen.
038**Tildel Bullet Prefab (1)**Træk **`bullet`**-prefab'en fra Prefabs-mappen til feltet **Bullet Prefab**. Træk bullet prefab til script slot.
039**Tildel Bullet Prefab (2)**Prefab er nu tildelt. Bullet Prefab er tildelt.
040**Test Affyring**Genstart spillet (`Play`). Projektiler affyres nu korrekt. Spil kører, projektiler affyres.

Del 3: Game Controller og Niveauopbygning (Trin 041–070)

Nr. Handling Forklaring
041Projektil LivscyklusViser værdierne for projektilernes levetid/auto-destruktion. Værdier for Bullet's timeout/levetid.
042Opret GameController (1)Træk **`BuildLevelScript`** over i Hierarchy. Træk BuildLevelScript til Hierarchy.
043Opret GameController (2)Dette skaber et nyt Game Object med scriptet. Nyt objekt med BuildLevelScript.
044Tildel Invader Prefabs (1)Sæt `Size` for `Invader Prefabs` til **4**. Sæt størrelsen af Invader Prefabs til 4.
045Tildel Invader Prefabs (2)Begynd at trække Invader Prefabs til slots. Træk Invader Prefabs til slots.
046Tildel Invader Prefabs (3)Viser de fire forskellige Invader Prefabs. De fire invader prefabs i Project-vinduet.
047Tildel Invader Prefabs (4)Alle fire Prefabs er tildelt. Alle fire prefabs er tilføjet.
048Omdøb til GameController (1)Højreklik/tryk F2 for at omdøbe det nye objekt. Omdøb objektet i Hierarchy.
049Omdøb til GameController (2)Omdøb præcist til **`GameController`** (vigtigt med stort G og C). Objektet omdøbt til GameController.
050**Start for at teste**Stsrt spillet for at teste. Stop knappen trykkes.
051**Det virker!**Der er en level af invadere. Oprettelse af Canvas via Hierarchy-menu.
052**Skyd dem ned**Og de kan skydes. Oprettelse af UI Text-element.
053**Fejl**Men vi får en fejl når de rammes. Text-elementet omdøbt til Score Text.
054**Fejlsøgning**Stop spillet for at fejlsøge. Oprettelse af andet UI Text-element.
055**Fejsøgning**Fejlen kommer fra en linie i et script. Text-elementet omdøbt til Lives Text.
056**Fejlsøgning**Den prøver at finde 'scoreCounterScript' men det har vi ikke tilføjet endnu. Oprettelse af tredje UI Text-element.
057**Vælg GameController objektet**Vælg **`GameController` objektet**. GameController objektet er valgt.
058**Tilføj script**TIlføj scoreCounterScript til GameController objektet. Text-elementet omdøbt til Game Over Text.
059**Scriptet er tilføjet, men**Scriptet er tilføjet, men vi kan se der er tomme 'slots' vi skal lave linket op. Justering af UI Text-egenskaber i Inspector.
060**Opret Scoreboard**Træk ScoreBoard prefab'en op på hierarchy panelet. Justering af Rect Transform.
061**Skift til GameView**Aktiver GameView for at se ScoreBoard overlayet. Færdige UI-objekter i Hierarchy.
062**Se ScoreBoard UI**ScoreBoard overlayet er dukket op. Scoreboard UI overlay i Scene-vinduet.
063**Link Scoreboard UI (1)**Link de passende ScoreBaord Text-elementer ind i det matchende slot i `ScoreCounterScript` ved at klikke på de små cirkler. Score Text-element trækkes ind.
063**Link Scoreboard UI (2)**Og så vælge dem fra Scenes listen. Lives Text og Game Over Text trækkes ind.
065**Link Scoreboard UI (3)**Alle UI Text-elementer er linket til scriptet. Alle UI-elementer er linket.
066**Test Scoreboard (Play)**Klik på **Play** for at teste scoring. Tryk på Play knappen.
067**Scoreboard Fungerer**Bekræfter at scoringsmekanikken virker. Spil kører, score tæller.
068**Stop Test (Stop)**Klik på **Stop**-knappen. Tryk på Stop knappen.
069**Tilføj Fjendebevægelse (1)**Træk **`moveInvadersScript`** over på `GameController`. Træk moveInvadersScript til GameController.
070**Tilføj Fjendebevægelse (2)**Test (`Play`) for at se fjenderne bevæge sig sidelæns. Spil kører, fjender bevæger sig.

Del 4: Fjendens Affyring og Kollisionsfejl (Trin 071–082)

Nr. Handling Forklaring
071**Tilføj Bombe-Script**Træk **`DropBombsScript`** over på `GameController`. Træk DropBombsScript til GameController.
072**Tildel Bomb Prefab (1)**Feltet **Bomb Prefab** skal tildeles. Bomb Prefab slot i DropBombsScript.
073**Tildel Bomb Prefab (2)**Træk **`bomb`**-prefab'en til feltet. Træk bomb prefab til slot.
074**Tildel Bomb Prefab (3)**Prefab er tildelt. Bomb prefab er tilføjet.
075**Test Bombe-Affyring (Play)**Klik på **Play** for at teste. Tryk på Play knappen.
076**Bombe-Affyring Fungerer**Bekræfter, at bomber affyres fra fjenderne. Spil kører, bomber falder.
077**FEJL: Ingen Kollision**Observerer, at bomberne flyver igennem 'spaceship'. Bomber flyver igennem spaceship.
078**Stop Test (Stop)**Klik på **Stop**-knappen. Tryk på Stop knappen.
079**Tilføj Skadeslogik (1)**Træk **`GetDestroyedByEnemiesScript`** over på `spaceship`-objektet. Træk script til spaceship.
080**Forbered til Eksplosion**Viser det tomme felt (`Explosion Prefab`) i det nye script. Explosion Prefab slot.
081**Tildel Eksplosions-Prefab**Tildel **`explosion`**-prefab'en til **Explosion Prefab**-feltet. Explosion prefab er tilføjet.
082**Test uden Collider (fejl)**Viser, at spillet stadig ikke registrerer kollisionen. Test viser ingen effekt af skade.

Del 5: Kollisionsløsning og Genstart (Trin 083–100)

Nr. Handling Forklaring
083**Tilføj Box Collider 2D (1)**Tilføj komponenten **Box Collider 2D** til `spaceship`-objektet. Søgning efter Box Collider 2D.
084**Tilføj Box Collider 2D (2)**Vælger komponenten. Box Collider 2D valgt.
085**Collider Tilføjet**Viser Box Collider 2D komponenten i Inspector. Box Collider 2D tilføjet.
086**Sluttest af Kollision (Play)**Klik på **Play**-knappen. Tryk på Play knappen.
087**Kollision Virker**Bekræfter, at 'spaceship' nu ødelægges, og livstælleren reduceres ved træf. Spil kører, spaceship er ramt.
088**Game Over Skærm**Viser skærmen efter, at alle liv er mistet, hvilket udløser **Game Over**-teksten. Game Over skærmbillede.
089**Behov for Genstart Spil**Spillet sidder fast efter afsluttet spil og kræver genstartsfunktionalitet. Skærm fastlåst efter Game Over.
090**Tilføj Player Input (GC) (1)**Tilføj komponenten **Player Input** til **`GameController`**-objektet. Søgning efter Player Input for GameController.
091**Tilføj Player Input (GC) (2)**Fortsat tilføjelse. Player Input i søgeresultater.
092**Tilføj Player Input (GC) (3)**Komponent tilføjet til GameController. Player Input tilføjet til GameController.
093**Tildel Input Asset (GC) (1)**Ligesom med `spaceship` skal input asset tildeles. Actions slot.
094**Tildel Input Asset (GC) (2)**Tildel **`PlayerControls`**-asset'et. PlayerControls asset tilføjet.
095**Indstil Behavior (GC) (1)****Behavior** skal ændres. Behavior slot.
096**Indstil Behavior (GC) (2)**Sæt **Behavior** til **Invoke Unity Events**. Behavior sat til Invoke Unity Events.
097**Kable Genstarts-Funktion (1)**Gå til **Events** > **Fire** (bruges som genstartsknap). Events > Fire sektionen.
098**Kable Genstarts-Funktion (2)**Træk **`GameController`**-objektet til det nye slot. GameController objekt tilføjes til slot.
099**Kable Genstarts-Funktion (3)**Objektet er tilføjet. GameController er nu i slot.
100**Kable Genstarts-Funktion (4)**Vælg den relevante genstarts-funktion i scriptet (f.eks. `OnRestart` / `RestartGame`). Vælger genstartsfunktion.

Del 6: Audio Feedback (Lyd) (Trin 101–106)

Nr. Handling Forklaring
101**Vælg Projektil Prefab (1)**Vælg **`bullet`**-prefab'en i Project-vinduet for at åbne dens komponenter. Bullet prefab valgt i Project-vinduet.
102**Vælg Projektil Prefab (2)**Prefab'ens Inspector-vindue. Bullet prefab i Inspector.
103**Lyd til Skud (1)**Træk skudlyden over på Inspector-vinduet. Træk skudlyd til Inspector.
104**Lyd til Skud (2)**En **Audio Source** er tilføjet og spiller automatisk lyden (`Play On Awake`). Audio Source tilføjet til bullet prefab.
105**Vælg Eksplosions Prefab (1)**Vælg **`explosion`**-prefab'en i Project-vinduet. Explosion prefab valgt.
106**Lyd til Eksplosion (2)**Træk eksplosionslyden over på Inspector-vinduet for at tilføje lyd. Træk eksplosionslyd til explosion prefab.
107**Sluttest af spil med lyd (Play)**Klik på **Play**-knappen. Tryk på Play knappen.