Conteúdo do Curso
Jogo de Luta no Unity
Jogo de Luta no Unity
Estado de Fúria
Explicação da Classe RageState
A classe RageState
é um estado específico que lida com o comportamento do inimigo quando ele entra em modo de fúria. Esta classe herda da classe State
e inclui métodos para iniciar, atualizar e terminar o estado de fúria. Também inclui ações para adicionar saúde e mudar o dano de ataque quando 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;
Uma ação para adicionar saúde ao inimigo.
System.Action changingAttackDmg;
Uma ação para mudar 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 saúde e mudar o dano de ataque. Ele define esses valores para as variáveis membro correspondentes.
Método StartState
Este método define isStateFinished
como false
, aciona a animação de fúria definindo 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 saúde ao inimigo enquanto está no estado de fúria.
Método EndState
Este método para a animação de fúria definindo o parâmetro booleano "rage" no animador para false
.
Por Que Fizemos Assim
Comportamento Aprimorado do Inimigo;
O RageState
aprimora o comportamento do inimigo aumentando seu dano de ataque e adicionando continuamente saúde, tornando-o mais desafiador para o jogador;
Usar 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 deve se adaptar ao inimigo mais poderoso e resiliente.
Como Funciona no Contexto
Entrando no Estado de Fúria: Quando o inimigo entra no RageState
, o método StartState
é chamado, acionando 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 continuamente saúde ao inimigo, tornando mais difícil para o jogador derrotá-lo.
Saindo do Estado de Fúria: Quando o inimigo sai do RageState
, o método EndState
é chamado, parando a animação de fúria.
Estruturando o RageState
desta forma, garantimos que o inimigo possa se tornar significativamente mais poderoso e resiliente, proporcionando um desafio maior para o jogador e melhorando a experiência geral de jogo.
Inicializar Estado de Fúria
Explicação
Inicialização do RageState:
rage = new RageState(animator, (...) => {...}, (...) => {...});
Cria uma nova instância de RageState
chamada rage
;
Animator:
animator
: Passa o animador para controlar as animações;
Aumentar Saúde:
() => { health += 10f * Time.deltaTime; }
Uma função lambda que aumenta a saúde em 10
unidades por segundo;
Alterar Dano de Ataque:
() => { attack1.ChangeAttackDmg(15); attack2.ChangeAttackDmg(25); }
Uma função lambda que altera o dano de ataque de attack1
para 15
e attack2
para 25
.
Transição de Fúria
A rageTransition
é uma transição que move o inimigo para um RageState
quando certas condições são atendidas. Esta transição é projetada para tornar o inimigo mais formidável quando sua saúde cai abaixo de um determinado limite e ele ainda não entrou no estado de fúria.
Definição de Transição
Condição:
A transição verifica se a saúde do inimigo é menor ou igual a 40 e se o inimigo ainda não entrou no estado de fúria (haveRaged
é 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.
Porcentagem de Estado:
A transição usa new StatePourcentage(rage, 100f)
para indicar que, quando a condição é atendida, o inimigo irá transitar para o RageState
com 100% de probabilidade.
Por Que Fizemos Assim
Acionando Comportamento Poderoso: A rageTransition
permite que o inimigo se torne mais poderoso quando sua saúde está criticamente baixa, aumentando seu desafio para o jogador. Esta transição garante que o inimigo entre no estado de fúria apenas uma vez, evitando transições repetidas para o estado de fúria.
Jogabilidade Dinâmica e Desafiadora: Ao introduzir o estado de fúria em condições críticas de saúde, a jogabilidade se torna mais dinâmica e desafiadora, exigindo que o jogador adapte sua estratégia.
Como Funciona no Contexto
Verificação de Saúde: Durante o jogo, à medida que o inimigo sofre dano, sua saúde é monitorada. Quando a saúde do inimigo cai para 40 ou menos e ele ainda não entrou em fúria, a condição rageTransition
é atendida.
Acionando o Estado de Fúria: Uma vez que a condição é atendida, haveRaged
é definido como true
, e a transição para o RageState
é acionada com 100% de probabilidade.
Entrando no Estado de Fúria: O RageState
é iniciado, aumentando o dano de ataque do inimigo e continuamente adicionando saúde, tornando o inimigo significativamente mais difícil de derrotar.
Obrigado pelo seu feedback!