Godot

Grundläggande Godot

🧩 Grunderna i Godots nodsystem

Vad är en nod?

En nod (node) är en grundläggande byggsten i Godot. Nästan allt i spelet — kameror, sprites, ljud, användargränssnitt och spelaren själv — är noder. Varje nod:

  • Har en typ (t.ex. Sprite2D, Label, Timer, Area2D).
  • Kan ha barnnoder (du bygger en trädstruktur).
  • Kan ha script kopplade till sig.
  • Kan kommunicera med andra noder i trädet.

En scen är egentligen bara en nod med ett eget träd av undernoder.

Noder ärvs i hierarkier (arvsträd)

Alla noder ärver från basklassen Node. Här är ett förenklat exempel:

Node
├── Node2D (för 2D-spel)
│   ├── Sprite2D
│   ├── Area2D
│   └── CharacterBody2D
└── Control (för UI)
    ├── Button
    └── Label

Exempel på vanliga nodtyper

Nodtyp Beskrivning.
Node2D Basnod för 2D-positionering.
CharacterBody2D Används för spelkaraktärer (har fysik).
Sprite2D Visar en bild i 2D.
Label Skriver ut text på skärmen.
Timer Räknar ner tid.
Area2D För kollision och triggers (t.ex. pickups).
AudioStreamPlayer2D Spelar ljud.
Control För UI-element.

⚙️ Livscykel och fördefinierade metoder i GDScript

Godot anropar automatiskt vissa metoder under olika delar av spelets körning. Dessa kallas callback-metoder och fungerar som “krokar” in i motorns logik.

Viktiga metoder

Metod När den körs
_ready() När noden är klar och placerad i scenen
_process(delta) Varje bildruta, används för logik som inte är fysikbaserad
_physics_process(delta) Varje bildruta, synkad med fysiksystemet
_input(event) När en input (mus, tangentbord etc.) tas emot
_unhandled_input(event) Som _input(), men om ingen annan nod fångade det
_exit_tree() När noden tas bort från scenen
_enter_tree() När noden läggs till i scenen

Kodexempel

extends Sprite2D

func _ready():
    print("Scenen är redo!")

func _process(delta):
    rotation += 1.0 * delta

func _input(event):
    if event.is_action_pressed("ui_accept"):
        print("Du tryckte Enter!")

🧠 Signal-systemet (Event-baserat)

Godot använder signaler för att reagera på händelser: • Exempel: en knapp trycks, en kropp krockar med något, en timer går ut. • Du kan ansluta en signal till en funktion i din kod.

Exempel med signal:

func _on_button_pressed():
    print("Knappen trycktes ned!")

I editorn:

  • Markera noden (t.ex. Button)
  • Gå till fliken “Node”
  • Välj signalen pressed → tryck “Connect” → välj funktionen du vill använda

📂 Övergripande struktur i ett projekt

En vanlig struktur i Godot-projekt:

project/
├── scenes/
│   ├── MainMenu.tscn
│   ├── Player.tscn
│   └── Level1.tscn
├── scripts/
│   ├── Player.gd
│   └── GameManager.gd
├── assets/
│   ├── sprites/
│   ├── audio/
│   └── fonts/
└── Global.gd   ← Autoloaded (global state/variabler)

🧭 Sammanfattning

  • Allt i Godot bygger på noder som kombineras i scener.
  • Du kan skriva GDScript för att få noder att agera.
  • Använd _ready(), _process(), och liknande för att styra beteende.
  • Godots signal-system ersätter traditionella event listeners.
  • Projektstruktur är viktig för att hålla ordning i större projekt.