Conteúdo do Curso
Jogo de Luta no Unity
Jogo de Luta no Unity
Estado de Fúria
csharp
Explicação da Classe RageState
A classe RageState
é um estado específico que gerencia o comportamento do inimigo quando ele entra no modo de fúria. Esta classe herda da classe State
e inclui métodos para iniciar, atualizar e finalizar o estado de fúria. Também inclui ações para adicionar vida e alterar o dano de ataque enquanto o inimigo está em modo de fúria.
Definição da Classe e Variáveis Membro
Definição da Classe;
public class RageState : State
Esta classe herda da classe State
, o que significa que deve implementar os métodos abstratos definidos em State
.
Variáveis Membro:
Animator animator;
Controla as animações.
System.Action addHealth;
Ação para adicionar vida ao inimigo.
System.Action changingAttackDmg;
Ação para alterar o dano de ataque do inimigo.
Construtor
O construtor inicializa o RageState
com os componentes necessários: um Animator
para animações e duas ações para adicionar vida e alterar o dano de ataque. Ele atribui esses valores às variáveis membro correspondentes.
Método StartState
Este método define isStateFinished
como false
, aciona a animação de fúria ao definir o parâmetro booleano "rage" no animator como true
e chama changingAttackDmg
para aumentar o dano do inimigo.
Método UpdateState
Este método é chamado a cada frame e chama addHealth
para adicionar continuamente vida ao inimigo enquanto estiver no estado de fúria.
Método EndState
Este método interrompe a animação de fúria ao definir o parâmetro booleano "rage" no animator como false
.
Por Que Fizemos Desta Forma
Comportamento Aprimorado do Inimigo;
O RageState
aprimora o comportamento do inimigo ao aumentar o dano de ataque e adicionar vida continuamente, tornando-o mais desafiador para o jogador;
O uso de ações (System.Action
) permite modificações flexíveis e modulares nos atributos do inimigo.
Jogabilidade Dinâmica e Envolvente:
Ao fazer o inimigo entrar em um estado de fúria, a jogabilidade se torna mais dinâmica e envolvente, pois o jogador precisa se adaptar a um inimigo mais forte e resistente.
Como Funciona no Contexto
Entrada no Estado de Fúria: Quando o inimigo entra no RageState
, o método StartState
é chamado, ativando a animação de fúria e aumentando o dano de ataque do inimigo.
Durante a Fúria: O método UpdateState
é chamado a cada frame. Ele adiciona vida continuamente ao inimigo, tornando mais difícil para o jogador derrotá-lo.
Saída do Estado de Fúria: Quando o inimigo sai do RageState
, o método EndState
é chamado, interrompendo a animação de fúria.
Ao estruturar o RageState
desta forma, garantimos que o inimigo possa se tornar significativamente mais forte e resistente, proporcionando um desafio maior ao jogador e aprimorando a experiência geral de jogo.
Inicializar Estado de Fúria
csharp
Explicação
Inicialização do RageState:
rage = new RageState(animator, (...) => {...}, (...) => {...});
Cria uma nova instância de RageState
chamada rage
;
Animator:
animator
: Passa o animator para controlar as animações;
Aumento de Vida:
() => { health += 10f * Time.deltaTime; }
Função lambda que aumenta a vida em 10
unidades por segundo;
Alteração do Dano de Ataque:
() => { attack1.ChangeAttackDmg(15); attack2.ChangeAttackDmg(25); }
Função lambda que altera o dano de ataque de attack1
para 15
e de attack2
para 25
.
Transição para Fúria
csharp
A rageTransition
é uma transição que move o inimigo para um RageState
quando certas condições são atendidas. Essa transição foi projetada para tornar o inimigo mais formidável quando sua vida cai abaixo de um determinado limite e ele ainda não entrou no estado de fúria.
Definição da Transição
Condição:
A transição verifica se a vida do inimigo é menor ou igual a 40 e se o inimigo ainda não entrou no estado de fúria (haveRaged
está false
).
Se ambas as condições forem atendidas, define haveRaged
como true
para garantir que o inimigo entre no estado de fúria apenas uma vez e retorna true
para acionar a transição.
State Pourcentage:
A transição utiliza new StatePourcentage(rage, 100f)
para indicar que, quando a condição for atendida, o inimigo irá transitar para o RageState
com 100% de probabilidade.
Por Que Fizemos Desta Forma
Ativação de Comportamento Poderoso: O rageTransition
permite que o inimigo se torne mais poderoso quando sua vida está criticamente baixa, aumentando o desafio para o jogador. Essa transição garante que o inimigo entre no estado de fúria apenas uma vez, evitando transições repetidas para esse estado.
Jogabilidade Dinâmica e Desafiadora: Ao introduzir o estado de fúria em condições críticas de vida, a jogabilidade se torna mais dinâmica e desafiadora, exigindo que o jogador adapte sua estratégia.
Como Funciona no Contexto
Verificação de Vida: Durante o jogo, à medida que o inimigo recebe dano, sua vida é monitorada. Quando a vida do inimigo cai para 40 ou menos e ele ainda não entrou em fúria, a condição rageTransition
é atendida.
Ativação do Estado de Fúria: Assim que a condição é atendida, haveRaged
é definido como true
, e a transição para o RageState
é acionada com 100% de probabilidade.
Entrada no Estado de Fúria: O RageState
é iniciado, aumentando o dano de ataque do inimigo e adicionando vida continuamente, tornando o inimigo significativamente mais difícil de derrotar.
Obrigado pelo seu feedback!