Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
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

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

Tudo estava claro?

Como podemos melhorá-lo?

Obrigado pelo seu feedback!

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