Fysik og kollision
Computerspace · FGU · Spiludvikling
💥 Hvad er fysik og kollision i Godot?
Fysiksystemet i Godot simulerer tyngdekraft, kollision og bevægelse.
Vigtige fysik-noder:
CharacterBody2D:
- Til spillerfigurer og fjender du kontrollerer via kode
- Bruger
move_and_slide() - Påvirkes IKKE automatisk af tyngdekraft
RigidBody2D:
- Til objekter med realistisk fysik
- Påvirkes automatisk af tyngdekraft og kollision
- Bolde, kasser, projektiler
StaticBody2D:
- Til ting der IKKE bevæger sig
- Gulve, vægge, platforme
CollisionShape2D:
- Definerer formen for kollision
- Skal tilføjes som barn af en fysik-node
- Former: rektangel, cirkel, polygon
---
🎯 Hvorfor er det vigtigt?
- Interaktion: Spillere skal kunne ramme fjender, samle items
- Realisme: Fysik gør spillet troværdigt
- Gameplay: Kollision er grundlaget for næsten al spiludvikling
---
🔧 Eksempler
Platformspil-bevægelse med tyngdekraft:
```gdscript
extends CharacterBody2D
var speed = 200.0
var jump_force = -400.0
var gravity = 800.0
func _physics_process(delta):
# Tyngdekraft
if not is_on_floor():
velocity.y += gravity * delta
# Hop
if Input.is_action_just_pressed("ui_accept") and is_on_floor():
velocity.y = jump_force
# Bevægelse
var direction = Input.get_axis("ui_left", "ui_right")
velocity.x = direction * speed
move_and_slide()
```
Registrér kollision med Area2D:
```gdscript
Forbind body_entered signal i editoren eller kode
func _on_area_2d_body_entered(body):
if body.name == "Player":
print("Spilleren rørte ved mig!")
queue_free() # Fjern dette objekt
```
---
🎓 Læringsmål for Fysik og kollision
Læringsmål
- Kende forskellen på CharacterBody2D, RigidBody2D og StaticBody2D
- Tilføje CollisionShape2D korrekt
- Implementere tyngdekraft og hop
- Registrere kollision med Area2D
- Bygge et simpelt platformspil med fysik
Sådan kan du arbejde med emnet
- Hvad er forskellen på CharacterBody2D og RigidBody2D?
- Hvordan laver jeg hop i et platformspil?
- Hvad er CollisionShape2D?
- Hvordan registrerer jeg kollision i Godot?
⚠️ Typiske fejl at undgå
- Glemmer CollisionShape2D – uden den sker der ingen kollision
- Bruger RigidBody2D til spilleren – brug CharacterBody2D for fuld kontrol
- Glemmer delta i tyngdekraft –
velocity.y += gravity * delta(ikke bare gravity) - Forkert lag/maske – sørg for at collision layers matcher
---
💡 Tips til at komme i gang
- Lav en platform – StaticBody2D + CollisionShape2D
- Tilføj en spiller – CharacterBody2D med hop og bevægelse
- Eksperimentér med RigidBody2D – lav bolde der falder ned
Øv dette emne med AI — quizzer, forklaringer og feedback tilpasset dit niveau.
Prøv Fagportalen gratis