Animaties
In deze stap vervang je de statische Sprite2D door een AnimatedSprite2D zodat je karakter kan bewegen, rennen en springen met animaties.
Wat ga je doen?
Sprite2Dvervangen doorAnimatedSprite2D- Drie animaties aanmaken:
idle,runenjump - De frames per animatie instellen vanuit je sprite sheet
Stappen
- Verwijder de bestaande
Sprite2Dnode (klik met rechts → Delete Node) - Voeg een
AnimatedSprite2Dtoe als child vanCharacterBody2D - Selecteer de
AnimatedSprite2Den klik in de Inspector op SpriteFrames → New SpriteFrames - Klik onderaan op het SpriteFrames paneel om het te openen
- Maak drie animaties aan:
idle,run,jump - Voeg voor elke animatie de juiste frames toe vanuit je sprite sheet
Zet de FPS (frames per seconde) van elke animatie op een waarde die er soepel uitziet — probeer 8 of 10 als startpunt.
Er gaat iets mis
Mijn animatie speelt niet af
Oorzaak: Er is geen play() aanroep in het script, of de naam van de animatie klopt niet.
Oplossing:
- Controleer of je in het script
$AnimatedSprite2D.play("idle")(of een andere animatienaam) aanroept - Controleer of de naam in het script exact overeenkomt met de naam in SpriteFrames (hoofdlettergevoelig!)
- Controleer of de
AnimatedSprite2Dde juiste naam heeft in de Scene Tree — spreek hem aan met$AnimatedSprite2D
Mijn script geeft een fout: "Node not found: Sprite2D"
Oorzaak: Het script verwijst nog naar $Sprite2D, maar die node is vervangen door $AnimatedSprite2D.
Oplossing: Vervang alle verwijzingen naar $Sprite2D in je script door $AnimatedSprite2D.
Ik krijg een fout: "Attempt to call function on a null instance"
Oorzaak: Godot kan de node $AnimatedSprite2D niet vinden. De naam in je script komt niet overeen met de naam in de Scene Tree.
Oplossing:
- Klik op de
AnimatedSprite2Din de Scene Tree en controleer de exacte naam (hoofdlettergevoelig) - Zorg dat je script
$AnimatedSprite2Dgebruikt — met exact dezelfde naam - Controleer of de
AnimatedSprite2Deen child is van deCharacterBody2D, niet los in de scene
De animatie bevriest op één frame
Oorzaak: De animatie is niet ingesteld op loopen, of er zit maar één frame in de animatie.
Oplossing:
- Selecteer de animatie in SpriteFrames en zet Loop aan (het herhaal-icoontje)
- Controleer of er meer dan één frame is toegevoegd