Razvijte impresivno okruženje igranja za svoje Godot igre sa zadivljujućim animacijama.
U razvoju igara, animacije igraju ključnu ulogu u stvaranju privlačnog i impresivnog iskustva za igrače. Dodavanje 2D animacija vašoj Godot igrici može oživjeti vaše likove i okolinu, čineći ih vizualno privlačnijim i interaktivnijim.
Srećom, Godot nudi snažne alate i značajke za jednostavno stvaranje i upravljanje 2D animacijama.
Postavljanje igre Godot
Za početak postavite osnovnu scenu 2D igre Godot game engine. Napravite novu scenu i dodajte a KinematicBody2D čvor kao lik igrača. Unutar KinematicBody2D, dodati CollisionShape2D s oblikom pravokutnika koji predstavlja igračeve granice sudara.
Kôd korišten u ovom članku dostupan je u ovom GitHub spremište i besplatan je za korištenje pod MIT licencom.
Dodatno dodajte Animirani Sprite čvor za rukovanje animacijama igrača. Nadalje, provjerite mapirate li sljedeće radnje unosa u svoj Karta unosa:
Zatim napišite GDScript kod za kontrolu kretanja igrača. Priložite sljedeću skriptu KinematicBody2D čvor:
extends 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 ako je Input.is_action_pressed("move_up"): velocity.y -= SPEED ako je Input.is_action_pressed("move_down"): velocity.y += SPEED brzina = pomicanje_i_klizanje (brzina)
Ova skripta postavlja konstantnu brzinu za igrača i omogućuje mu da se pomiče lijevo, desno, gore i dolje koristeći tipke sa strelicama ili WASD.
Dodavanje SpriteSheeta u AnimatedSprite
Sada konfigurirajte Animirani Sprite koristiti sprite list za animacije. Odaberite Animirani Sprite čvor i idite na Okviri odjeljak na kartici svojstava čvora. Ovdje kliknite na Novi SpriteFrames dugme.
Prebacite se na SpriteFrames karticu koja se nalazi na dnu Godot editora. u SpriteFrames kliknite karticu Nova animacija dugme. Stvorite animacije kao što su hodati i besposlen dodavanjem odgovarajućih okvira svakoj animaciji.
Osim toga, imate mogućnost stvaranja drugih animacija, poput pucanja, skakanja i penjanja za platformer igru. Nakon toga kliknite na Dodajte okvire iz SpriteSheeta gumb za automatsko izdvajanje pojedinačnih okvira iz lista spritea.
Upravljanje animacijama pomoću GDScripta
Sada kada ste postavili svoje animacije, možete ih programski kontrolirati pomoću GDScripta.
Reprodukcija i zaustavljanje animacije
Upravljanje reprodukcijom animacija ključno je za pružanje dinamičnih i interaktivnih iskustava u vašoj igri. The Animirani Sprite čvor u Godotu nudi metode za reprodukciju i zaustavljanje animacija prema vašoj logici igre.
Proširite KinematicBody2D čvor i upravljati kontrolom animacije unutar _fizički_proces funkcija. Možete koristiti igra_animacija i stop_animacija ulaze za pokretanje odgovarajućih radnji animacije.
extends KinematicBody2Dfunc _physics_process (delta): # Reproduciraj animaciju ako je Input.is_action_just_pressed("play_animation"): $AnimatedSprite.play() # Zaustavi animaciju i vrati na prvi okvir ako je Input.is_action_just_pressed("stop_animation"): $AnimatedSprite.stop() $AnimatedSprite.frame = 0
Mapiranjem odgovarajućih radnji unosa igračima možete omogućiti kontrolu nad reprodukcijom animacije u vašoj igri.
Na primjer, možete vezati igra_animacija radnju na pritisak gumba ili određeni događaj u vašoj igri, dopuštajući igraču da pokrene niz animacija u željenom trenutku. Osim toga, možete pronađite glazbu bez autorskih prava za reprodukciju dok animacija traje.
Slično tome, možete pokrenuti stop_animacija akcije za potpuno zaustavljanje animacije.
Uključivanjem ovih mehanizama kontrole animacije možete dodati dubinu i interaktivnost animacijama svoje igre, stvarajući privlačnija i sveobuhvatnija iskustva za svoje igrače.
Rotiranje animacije
Rotiranje animacije može vašoj igri dodati vizualni interes i raznolikost. Možete programski rotirati Animirani Sprite čvor za promjenu orijentacije animacije. Možete primijeniti rotaciju u stupnjevima pomoću rotirati() metoda.
extends KinematicBody2Dfunc _physics_process (delta): if Input.is_action_just_pressed("rotate_animation"): # Zakreni animaciju za 45 stupnjeva u smjeru kazaljke na satu $AnimatedSprite.rotate (deg2rad (45))
Kada pritisnete gumbe povezane s rotiraj_animaciju (možete definirati ovu radnju u vašoj mapi unosa), the rotirati() metoda se poziva na Animirani Sprite čvor. Rotira čvor za 45 stupnjeva u smjeru kazaljke na satu pomoću deg2rad() za pretvaranje stupnjeva u radijane.
Imajte na umu da će primijeniti rotaciju na cijelu Animirani Sprite čvor, uključujući sve okvire animacije. Stoga, ako želite rotirati samo određene okvire, možda ćete ih morati podijeliti u zasebne Animirani Sprite čvorove ili koristiti druge tehnike kao što je okretanje pojedinačnih okvira.
Okretanje animacije
Okretanje animacije vodoravno ili okomito može biti korisno za odraz promjena u smjeru lika. U Godotu, Animirani Sprite čvor pruža svojstva za kontrolu okretanja.
Za vodoravno okretanje animacije postavite flip_h vlasništvo od Animirani Sprite do pravi. Ovo će zrcaliti animaciju duž horizontalne osi. Slično, postavljanje flip_v vlasništvo na pravi će zrcaliti animaciju duž okomite osi.
extends KinematicBody2Dfunc _physics_process (delta): if Input.is_action_just_pressed("flip_animation"): $AnimatedSprite.flip_h = true # ili $AnimatedSprite.flip_v = true za okomito okretanje
Ako igrač pritisne okretna_animacija radnju unosa zatim postavite flip_h vlasništvo od Animirani Sprite do pravi. Ovo će okrenuti animaciju vodoravno.
Korištenje signala u AnimatedSprite
Uz programsku kontrolu animacija, Godot pruža moćan sustav događaja koji se zove signali. Signali vam omogućuju da odgovorite na određene događaje ili promjene koje se događaju tijekom izvođenja vaše igre.
U slučaju Animirani Sprite, postoje dva važna signala koja možete koristiti: animacija_gotova() i frame_changed().
1. animation_finished() Signal
The animacija_gotova() signal se emitira kada animacija dosegne zadnji kadar, bilo tijekom pojedinačne reprodukcije ili kada se ponavlja. Ovaj signal je koristan kada želite izvršiti radnje ili pokrenuti događaje kada animacija završi.
extends KinematicBody2Dfunc _ready(): $AnimatedSprite.connect("animation_finished", self, "_on_animation_finished") func _on_animation_finished(): # Izvođenje radnji ili pokretanje događaja print("Animation gotovo!") # Dodatni kod ovdje...
Spojite animacija_gotova() signal od Animirani Sprite prema _on_animation_finished() metoda u istoj skripti koristeći Spojiti() funkcija.
Kada se animacija završi, možete izvršiti prilagođenu logiku ili pokrenuti druge funkcije pomoću _on_animation_finished() metoda.
2. frame_changed() Signal
The frame_changed() signal se emitira kad god se trenutni okvir animacije promijeni. To se može dogoditi kada se animacija reproducira ili kada programski modificirate kadar. Ovaj signal možete koristiti za otkrivanje promjena okvira i reagiranje u skladu s tim.
extends KinematicBody2Dfunc _ready(): $AnimatedSprite.connect("frame_changed", self, "_on_frame_changed")func _on_frame_changed(): # Izvođenje radnji na temelju trenutnog okvira var currentFrame = $AnimatedSprite.frame print("Trenutni okvir: ", currentFrame) # Dodatni kod ovdje...
Spojite frame_changed() signal od Animirani Sprite prema _on_frame_changed() metoda u istoj skripti. Kada se okvir promijeni, možete pristupiti trenutnom okviru koristeći _on_frame_changed() metodu i izvršava radnje ili logiku na temelju vrijednosti okvira.
Upotrebom signala možete reagirati na događaje animacije kao što su završetak ili promjene okvira i uključiti dinamičko ponašanje ili pokrenuti određene radnje u svojoj igri.
Učinite Godot igre privlačnijim pomoću animacija
Dodavanje 2D animacija vašim Godot igrama može uvelike poboljšati ukupno iskustvo igrača. Animacije oživljavaju likove, čineći njihove pokrete i radnje vizualno privlačnijim. Uključivanjem animacija za različite radnje kao što su hodanje, trčanje, napadanje i skakanje, možete stvoriti dinamično i impresivno okruženje igranja.
Štoviše, također možete koristiti animacije za vizualnu povratnu informaciju igraču. Ove povratne informacije pomažu da igra bude zanimljivija i osjetljivija, povećavajući igračev osjećaj kontrole i uključenosti.