Udvikl et fordybende gameplaymiljø til dine Godot-spil med fængslende animationer.
I spiludvikling spiller animationer en afgørende rolle i at skabe en engagerende og fordybende oplevelse for spillere. Tilføjelse af 2D-animationer til dit Godot-spil kan bringe dine karakterer og miljøer til live, hvilket gør dem mere visuelt tiltalende og interaktive.
Heldigvis giver Godot kraftfulde værktøjer og funktioner til nemt at skabe og kontrollere 2D-animationer.
Opsætning af Godot-spillet
For at begynde skal du konfigurere en grundlæggende 2D-spilscene i Godot spilmotoren. Opret en ny scene og tilføj en KinematicBody2D node som spillerkarakteren. Inde i KinematicBody2D, Tilføj en CollisionShape2D med en rektangelform, der repræsenterer spillerens kollisionsgrænser.
Koden brugt i denne artikel er tilgængelig i denne GitHub-depot og er gratis for dig at bruge under MIT-licensen.
Tilføj desuden en Animeret Sprite node til at håndtere spillerens animationer. Sørg desuden for, at du kortlægger følgende inputhandlinger i din Input kort:
Skriv derefter GDScript-koden for at kontrollere spillerens bevægelse. Vedhæft følgende script til KinematicBody2D node:
udvider KinematicBody2Dconst SPEED = 200func _physics_process (delta): var velocity = Vector2.ZERO if Input.is_action_pressed("move_left"): velocity.x -= SPEED if Input.is_action_pressed("move_right"): velocity.x += SPEED if Input.is_action_pressed("move_up"): velocity.y -= SPEED if Input.is_action_pressed("move_down"): velocity.y += SPEED velocity = move_and_slide (hastighed)
Dette script opsætter en konstant hastighed for spilleren og giver dem mulighed for at bevæge sig til venstre, højre, op og ned ved hjælp af piletasterne eller WASD.
Tilføjelse af SpriteSheet i AnimatedSprite
Konfigurer nu Animeret Sprite at bruge et sprite-ark til animationer. Vælg Animeret Sprite node og naviger til Rammer sektion i nodens egenskabsfane. Her skal du klikke på Nye SpriteFrames knap.
Skift til SpriteFrames fanen placeret i bunden af Godot-editoren. I den SpriteFrames fanen, skal du klikke på Ny animation knap. Lav animationer som f.eks gå og ledig ved at tilføje passende frames til hver animation.
Derudover har du mulighed for at oprette andre animationer, såsom at skyde, hoppe og klatre til et platformspil. Derefter skal du klikke på Tilføj rammer fra SpriteSheet knappen for automatisk at udtrække individuelle rammer fra spritearket.
Styring af animationer ved hjælp af GDScript
Nu hvor du har sat dine animationer op, kan du styre dem programmatisk ved hjælp af GDScript.
Afspilning og stop af animationen
Styring af afspilning af animationer er afgørende for at give dynamiske og interaktive oplevelser i dit spil. Det Animeret Sprite node i Godot tilbyder metoder til at spille og stoppe animationer i henhold til din spillogik.
Forlæng KinematicBody2D node og håndtere animationskontrollen i _fysikproces fungere. Du kan bruge play_animation og stop_animation input for at udløse de tilsvarende animationshandlinger.
udvider KinematicBody2Dfunc _physics_process (delta): # Afspil animationen, hvis Input.is_action_just_pressed("play_animation"): $AnimatedSprite.play() # Stop animationen og nulstil til det første billede, hvis Input.is_action_just_pressed("stop_animation"): $AnimatedSprite.stop() $AnimatedSprite.frame = 0
Ved at kortlægge de relevante inputhandlinger kan du give spillerne kontrol over animationsafspilningen i dit spil.
For eksempel kan du binde play_animation handling til et knaptryk eller en specifik begivenhed i dit spil, så spilleren kan udløse en animationssekvens på et ønsket tidspunkt. Derudover kan du finde ophavsretsfri musik at spille, mens animationen kører.
På samme måde kan du udløse stop_animation handlinger for helt at stoppe animationen.
Ved at inkorporere disse animationskontrolmekanismer kan du tilføje dybde og interaktivitet til dit spils animationer og skabe mere engagerende og fordybende oplevelser for dine spillere.
Roterer animationen
Rotation af animationen kan tilføje visuel interesse og variation til dit spil. Du kan programmæssigt rotere Animeret Sprite node for at ændre animationens orientering. Du kan anvende rotationen i grader ved hjælp af rotere() metode.
udvider KinematicBody2Dfunc _physics_process (delta): if Input.is_action_just_pressed("rotate_animation"): # Roter animationen 45 grader med uret $AnimatedSprite.rotate (deg2rad (45))
Når du trykker på de knapper, der er knyttet til rotere_animation (du kan definere denne handling i dit inputkort), den rotere() metode kaldes på Animeret Sprite node. Den roterer noden 45 grader i urets retning vha deg2rad() at konvertere graderne til radianer.
Husk, at det vil anvende rotation til det hele Animeret Sprite node, inklusive alle frames i animationen. Derfor, hvis du kun vil rotere bestemte rammer, skal du muligvis opdele dem i separate Animeret Sprite noder eller bruge andre teknikker såsom at vende individuelle frames.
Vend animationen
Det kan være nyttigt at vende animationen vandret eller lodret til at afspejle ændringer i karakterretningen. I Godot, den Animeret Sprite node giver egenskaber til at styre flipping.
For at vende animationen vandret skal du indstille flip_h ejendom af Animeret Sprite til rigtigt. Dette vil spejle animationen langs den vandrette akse. På samme måde indstilles flip_v ejendom til rigtigt vil spejle animationen langs den lodrette akse.
udvider KinematicBody2Dfunc _physics_process (delta): hvis Input.is_action_just_pressed("flip_animation"): $AnimatedSprite.flip_h = true # eller $AnimatedSprite.flip_v = true for vertikal flipping
Hvis afspilleren trykker på flip_animation inputhandling og indstil derefter flip_h ejendom af Animeret Sprite til rigtigt. Dette vil vende animationen vandret.
Brug af signaler i AnimatedSprite
Ud over at styre animationer programmatisk, leverer Godot et kraftfuldt hændelsessystem kaldet signaler. Signaler giver dig mulighed for at reagere på specifikke hændelser eller ændringer, der opstår under udførelsen af dit spil.
I tilfælde af Animeret Sprite, er der to vigtige signaler, som du kan bruge: animation_finished() og frame_changed().
1. animation_finished() Signal
Det animation_finished() signalet udsendes, når animationen når det sidste billede, enten under en enkelt afspilning, eller når den går i loop. Dette signal er nyttigt, når du vil udføre handlinger eller udløse hændelser, når en animation er fuldført.
udvider KinematicBody2Dfunc _ready(): $AnimatedSprite.connect("animation_finished", self, "_on_animation_finished")func _on_animation_finished(): # Udfør handlinger eller udløs hændelser print("Animation færdig!") # Yderligere kode her...
Tilslut animation_finished() signal fra Animeret Sprite til _on_animation_finished() metode i det samme script ved hjælp af Opret forbindelse() fungere.
Når animationen er færdig med at spille, kan du udføre brugerdefineret logik eller udløse andre funktioner ved hjælp af _on_animation_finished() metode.
2. frame_changed() Signal
Det frame_changed() signalet udsendes, når det aktuelle billede af animationen ændres. Dette kan forekomme, når animationen afspilles, eller når du programmæssigt ændrer rammen. Du kan bruge dette signal til at registrere billedændringer og reagere i overensstemmelse hermed.
udvider KinematicBody2Dfunc _ready(): $AnimatedSprite.connect("frame_changed", self, "_on_frame_changed")func _on_frame_changed(): # Udfør handlinger baseret på den aktuelle ramme var currentFrame = $AnimatedSprite.frame print("Current frame: ", currentFrame) # Yderligere kode her...
Tilslut frame_changed() signal fra Animeret Sprite til _on_frame_changed() metode i samme script. Når rammen ændres, kan du få adgang til den aktuelle ramme ved hjælp af _on_frame_changed() metode og udføre handlinger eller logik baseret på rammens værdi.
Ved at bruge signaler kan du reagere på animationshændelser som f.eks. fuldførelse eller billedændringer og inkorporere dynamisk adfærd eller udløse specifikke handlinger i dit spil.
Gør Godot-spil mere engagerende ved hjælp af animationer
Tilføjelse af 2D-animationer til dine Godot-spil kan i høj grad forbedre den samlede spilleroplevelse. Animationer bringer karakterer til live og gør deres bevægelser og handlinger mere visuelt tiltalende. Ved at inkorporere animationer til forskellige handlinger såsom at gå, løbe, angribe og hoppe, kan du skabe et dynamisk og fordybende gameplay-miljø.
Desuden kan du også bruge animationer til at give visuel feedback til afspilleren. Denne feedback hjælper med at gøre spillet mere engagerende og responsivt, hvilket øger spillerens følelse af kontrol og involvering.