Tutorial: Fases de Habilidade
Aprenda a criar habilidades complexas com múltiplas fases (Casting, Active, Recovery) no Ability System.
Tempo: ~15 minutos | Nível: Avançado
O que são Fases?
Fases permitem dividir uma habilidade em etapas temporais, cada uma com seu próprio comportamento:
- Casting: Tempo de preparação (pode ser interrompido).
- Active: O momento em que o efeito principal ocorre.
- Recovery: Tempo de “recuperação” após o uso.
Passo 1: Definir as Fases no Resource
No seu ASAbility, você pode configurar o array phases.
# Exemplo de configuração de fases para um 'Super Ataque'
phases = [
{
"name": &"prepare",
"duration": 1.0,
"is_interruptible": true,
"tags_granted": [&"state.casting"]
},
{
"name": &"execute",
"duration": 0.5,
"is_interruptible": false,
"tags_granted": [&"state.immune"]
},
{
"name": &"recover",
"duration": 0.8,
"is_interruptible": true,
"tags_granted": [&"state.vulnerable"]
}
]Passo 2: Escutar Sinais de Mudança de Fase
No seu script de personagem ou no script da habilidade, você pode reagir às mudanças:
func _ready():
asc.ability_phase_changed.connect(_on_ability_phase_changed)
func _on_ability_phase_changed(ability_spec, old_phase, new_phase):
print("Habilidade %s mudou de %s para %s" % [ability_spec.get_ability().resource_name, old_phase, new_phase])
match new_phase:
&"prepare":
play_animation("cast_start")
spawn_particles("charge_up")
&"execute":
play_animation("attack_swing")
apply_damage_area()
&"recover":
play_animation("cast_end")Passo 3: Interrupção de Fases
Se uma fase for marcada como is_interruptible, ela pode ser cancelada por efeitos externos ou chamadas manuais:
func take_hit():
# Se estiver no meio de um 'cast' interrompível, cancela a habilidade
if asc.is_any_ability_in_phase(&"prepare"):
asc.cancel_all_abilities_with_tag(&"state.casting")
play_animation("stagger")Passo 4: Transições Visuais (Cues)
Você pode vincular ASCue a fases específicas para automação visual:
# No inspetor do ASAbility
# phase_cues = {
# "prepare": [res://vfx/charge.tres],
# "execute": [res://vfx/explosion.tres]
# }Conclusão
O sistema de fases é a base para criar mecânicas de “commit” e risco/recompensa em jogos de ação e RPG.
Próximo: Tutorial: Primeiro Ataque