Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Aprenda Estado de Fúria | Comportamento do Inimigo
Jogo de Luta no Unity
course content

Conteúdo do Curso

Jogo de Luta no Unity

Jogo de Luta no Unity

1. Sistema de Animação do Unity
2. Comportamento do Jogador
3. Comportamento do Inimigo
4. Melhore o Jogo
5. Melhore o Jogo Flappy Bird

book
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.

Tudo estava claro?

Como podemos melhorá-lo?

Obrigado pelo seu feedback!

Seção 3. Capítulo 8

Pergunte à IA

expand

Pergunte à IA

ChatGPT

Pergunte o que quiser ou experimente uma das perguntas sugeridas para iniciar nosso bate-papo

course content

Conteúdo do Curso

Jogo de Luta no Unity

Jogo de Luta no Unity

1. Sistema de Animação do Unity
2. Comportamento do Jogador
3. Comportamento do Inimigo
4. Melhore o Jogo
5. Melhore o Jogo Flappy Bird

book
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.

Tudo estava claro?

Como podemos melhorá-lo?

Obrigado pelo seu feedback!

Seção 3. Capítulo 8
some-alt