Stundas uzdevums: Pievienot animācijas UI un spēles objektiem ar AnimationPlayer un Tween.
Pirms sāc: izmanto iepriekš apgūto un šīs lapas teorijas/koda piemērus. Ja vajadzīga jauna komanda vai rīks, vispirms atrodi tās paraugu teorijas sadaļā.
Godot piedāvā divas pieejas animācijām:
#include <godot_cpp/classes/tween.hpp>
// Tween - fade in
void show_button() {
Tween* tween = create_tween();
button->set_modulate(Color(1, 1, 1, 0)); // sākotnēji caurspīdīgs
tween->tween_property(button, "modulate", Color(1, 1, 1, 1), 0.5);
}
// Tween - kustība ar bounce
void shake_button() {
Tween* tween = create_tween();
Vector2 orig = button->get_position();
tween->tween_property(button, "position", orig + Vector2(10, 0), 0.05);
tween->tween_property(button, "position", orig - Vector2(10, 0), 0.05);
tween->tween_property(button, "position", orig, 0.05);
}
Atceries: ar redzamu efektu editorā nepietiek. Paskaidro, kura C++ klase glabā stāvokli, kura metode to maina un kā Godot node struktūra izmanto šo kodu.
Pārbaudi: UI signāli, audio darbības, debug izvade un publicēšanas sagatave ir sasaistīta ar C++ spēles stāvokli.
#include <godot_cpp/variant/string.hpp>
using namespace godot;
struct PolishCheckpoint {
String lesson = "6.2 Animācijas un Tween";
bool uses_cpp = true;
bool connects_ui_signals = true;
bool routes_audio_events = true;
bool verifies_export_build = true;
};
Šis ir īss iesildīšanās uzdevums. Nokopē sagatavi, ielīmē to pareizajā koda vietā un palaid. Šeit pietiek droši izmēģināt tēmu 6.2 Animācijas un Tween; detalizētu izpratni veidosi nākamajos uzdevumos.
Kopējamais piemērs vai sagatave: izmanto šo bloku kā starta punktu, nevis kā gala risinājumu.
#include <godot_cpp/variant/string.hpp>
using namespace godot;
struct PolishCheckpoint {
String lesson = "6.2 Animācijas un Tween";
bool uses_cpp = true;
bool connects_ui_signals = true;
bool routes_audio_events = true;
bool verifies_export_build = true;
};
.cpp vai .hpp failā pie šīs stundas klases.Pievieno šīs stundas paņēmienu kā nelielu, strādājošu spēles mehānikas daļu.
PlayerState, velocity, score vai update_ui()._ready(), _process(), _physics_process(), signāla apstrādātāja vai projekta palīgklases.Pārbaudi, vai C++ algoritms darbojas paredzami spēles vidē.
Ja pamatdarbs ir pabeigts, paplašini spēli ar vienu nelielu C++ uzlabojumu.
#include <godot_cpp/classes/tween.hpp>
void Player::on_take_damage(int amount) {
// Damage number popup
Label* dmg = memnew(Label);
dmg->set_text("-" + String::num_int64(amount));
dmg->set_position(get_position() + Vector2(0, -30));
dmg->add_theme_color_override("font_color", Color(1, 0, 0));
get_parent()->add_child(dmg);
// Tween: peld augšup un izgaist
Tween* tween = dmg->create_tween();
tween->set_parallel(); // abas animācijas paralēli
tween->tween_property(dmg, "position",
dmg->get_position() + Vector2(0, -50), 0.8);
tween->tween_property(dmg, "modulate:a", 0.0, 0.8);
tween->chain()->tween_callback(Callable(dmg, "queue_free"));
// Player flash red
Tween* flash = create_tween();
set_modulate(Color(1, 0, 0));
flash->tween_property(this, "modulate", Color(1, 1, 1), 0.3);
}