Estado de Investida
Animator Controller
public class AnimatorController : MonoBehaviour
{
[SerializeField] Enemy enemy;
public void FinishMovement()
{
enemy.FinishMovement();
}
public void EndCurrentState()
{
enemy.EndCurrentState();
}
}
Finalidade do AnimatorController
A classe AnimatorController
é projetada para gerenciar e acionar comportamentos do inimigo por meio de eventos do animador. Isso permite uma integração fluida das transições de animação e mudanças de estado, garantindo que o comportamento do inimigo corresponda às suas animações.
Definição da Classe e Variável Membro
Definição da Classe:
public class AnimatorController : MonoBehaviour
define uma classe que herda de MonoBehaviour
, permitindo que seja anexada a um GameObject
no Unity.
Variável Membro:
[SerializeField] Enemy enemy;
é um campo serializado que permite vincular um objeto Enemy
ao AnimatorController
diretamente pelo Inspector do Unity.
A variável enemy
é uma referência ao script do inimigo, que contém funções responsáveis por controlar o comportamento do inimigo.
Métodos
Método FinishMovement:
public void FinishMovement()
: Este método chama enemy.FinishMovement()
. Ele foi projetado para ser chamado por um evento do animador, sinalizando o fim de uma animação de movimento.
Método EndCurrentState:
public void EndCurrentState()
: Este método chama enemy.EndCurrentState()
. Ele deve ser chamado por um evento do animador para sinalizar o fim do estado atual.
Integração com Eventos do Animador
Eventos do Animador:
Eventos do animador são eventos especiais que podem ser inseridos nas linhas do tempo de animação dentro do Animator do Unity.
Esses eventos podem chamar funções em scripts anexados ao mesmo GameObject
ou em seus filhos.
Como Funciona: Durante uma animação, como uma animação de corrida ou ataque, pontos específicos na linha do tempo podem acionar eventos.
Dash State
public class DashState : State
{
Rigidbody2D rb;
Animator animator;
Transform player;
float speed;
Vector2 scale;
Vector2 velocity;
bool stopDashing = false;
public DashState(Rigidbody2D rb, Animator animator, Transform p, float DashSpeed)
{
this.animator = animator;
player = p;
this.speed = DashSpeed;
this.rb = rb;
scale = rb.transform.localScale;
velocity = new Vector2();
}
public override void StartState()
{
isStateFinished = false;
animator.SetBool("dash", true);
stopDashing = false;
}
public override void FinishMovement()
{
stopDashing = true;
}
public override void UpdateState(float deltaTime)
{
if (stopDashing) return;
scale.x = rb.position.x > player.position.x ? -1 : 1;
rb.transform.localScale = scale;
velocity.x = scale.x * speed;
rb.velocity = velocity;
}
public override void EndState()
{
animator.SetBool("dash", false);
}
}
Explicação da Classe DashState
A classe DashState
é um estado específico que gerencia o comportamento de dash do inimigo. Esta classe herda da classe State
e inclui métodos para iniciar, atualizar e finalizar o estado de dash, além de lidar com o evento de término do movimento.
Construtor
O construtor inicializa o DashState
com os componentes necessários: um Rigidbody2D
para movimentação, um Animator
, um Transform
para o jogador e uma velocidade de dash. Ele define a escala inicial e inicializa o vetor de velocidade.
Método StartState
Este método define isStateFinished
como false
e aciona a animação de dash ao definir o parâmetro booleano "dash" no animator como true
. Também reinicia o sinalizador stopDashing
para false
.
Método FinishMovement
Este método define stopDashing
como true
, o que interrompe a ação de dash no método UpdateState
.
Método UpdateState
Este método atualiza a posição e orientação do inimigo com base na posição do jogador. Se stopDashing
for true
, o método retorna imediatamente, interrompendo atualizações adicionais. Ele ajusta a escala do inimigo para que fique voltado para o jogador, calcula a velocidade com base na velocidade definida e aplica essa velocidade ao Rigidbody2D
.
Método EndState
Este método interrompe a animação de dash definindo o parâmetro booleano "dash" no animator como false
.
Por que Fizemos Desta Forma
A flag stopDashing
permite um controle preciso sobre quando a corrida deve parar, tornando o comportamento mais responsivo aos eventos do jogo. Ao atualizar continuamente a posição e direção do inimigo, o DashState
garante que o inimigo possa correr rapidamente e com precisão em direção ao jogador. O uso de parâmetros do animador assegura que as animações do inimigo estejam corretamente sincronizadas com seus movimentos, proporcionando uma experiência suave e realista.
Obrigado pelo seu feedback!
Pergunte à IA
Pergunte à IA
Pergunte o que quiser ou experimente uma das perguntas sugeridas para iniciar nosso bate-papo
Awesome!
Completion rate improved to 3.33
Estado de Investida
Deslize para mostrar o menu
Animator Controller
public class AnimatorController : MonoBehaviour
{
[SerializeField] Enemy enemy;
public void FinishMovement()
{
enemy.FinishMovement();
}
public void EndCurrentState()
{
enemy.EndCurrentState();
}
}
Finalidade do AnimatorController
A classe AnimatorController
é projetada para gerenciar e acionar comportamentos do inimigo por meio de eventos do animador. Isso permite uma integração fluida das transições de animação e mudanças de estado, garantindo que o comportamento do inimigo corresponda às suas animações.
Definição da Classe e Variável Membro
Definição da Classe:
public class AnimatorController : MonoBehaviour
define uma classe que herda de MonoBehaviour
, permitindo que seja anexada a um GameObject
no Unity.
Variável Membro:
[SerializeField] Enemy enemy;
é um campo serializado que permite vincular um objeto Enemy
ao AnimatorController
diretamente pelo Inspector do Unity.
A variável enemy
é uma referência ao script do inimigo, que contém funções responsáveis por controlar o comportamento do inimigo.
Métodos
Método FinishMovement:
public void FinishMovement()
: Este método chama enemy.FinishMovement()
. Ele foi projetado para ser chamado por um evento do animador, sinalizando o fim de uma animação de movimento.
Método EndCurrentState:
public void EndCurrentState()
: Este método chama enemy.EndCurrentState()
. Ele deve ser chamado por um evento do animador para sinalizar o fim do estado atual.
Integração com Eventos do Animador
Eventos do Animador:
Eventos do animador são eventos especiais que podem ser inseridos nas linhas do tempo de animação dentro do Animator do Unity.
Esses eventos podem chamar funções em scripts anexados ao mesmo GameObject
ou em seus filhos.
Como Funciona: Durante uma animação, como uma animação de corrida ou ataque, pontos específicos na linha do tempo podem acionar eventos.
Dash State
public class DashState : State
{
Rigidbody2D rb;
Animator animator;
Transform player;
float speed;
Vector2 scale;
Vector2 velocity;
bool stopDashing = false;
public DashState(Rigidbody2D rb, Animator animator, Transform p, float DashSpeed)
{
this.animator = animator;
player = p;
this.speed = DashSpeed;
this.rb = rb;
scale = rb.transform.localScale;
velocity = new Vector2();
}
public override void StartState()
{
isStateFinished = false;
animator.SetBool("dash", true);
stopDashing = false;
}
public override void FinishMovement()
{
stopDashing = true;
}
public override void UpdateState(float deltaTime)
{
if (stopDashing) return;
scale.x = rb.position.x > player.position.x ? -1 : 1;
rb.transform.localScale = scale;
velocity.x = scale.x * speed;
rb.velocity = velocity;
}
public override void EndState()
{
animator.SetBool("dash", false);
}
}
Explicação da Classe DashState
A classe DashState
é um estado específico que gerencia o comportamento de dash do inimigo. Esta classe herda da classe State
e inclui métodos para iniciar, atualizar e finalizar o estado de dash, além de lidar com o evento de término do movimento.
Construtor
O construtor inicializa o DashState
com os componentes necessários: um Rigidbody2D
para movimentação, um Animator
, um Transform
para o jogador e uma velocidade de dash. Ele define a escala inicial e inicializa o vetor de velocidade.
Método StartState
Este método define isStateFinished
como false
e aciona a animação de dash ao definir o parâmetro booleano "dash" no animator como true
. Também reinicia o sinalizador stopDashing
para false
.
Método FinishMovement
Este método define stopDashing
como true
, o que interrompe a ação de dash no método UpdateState
.
Método UpdateState
Este método atualiza a posição e orientação do inimigo com base na posição do jogador. Se stopDashing
for true
, o método retorna imediatamente, interrompendo atualizações adicionais. Ele ajusta a escala do inimigo para que fique voltado para o jogador, calcula a velocidade com base na velocidade definida e aplica essa velocidade ao Rigidbody2D
.
Método EndState
Este método interrompe a animação de dash definindo o parâmetro booleano "dash" no animator como false
.
Por que Fizemos Desta Forma
A flag stopDashing
permite um controle preciso sobre quando a corrida deve parar, tornando o comportamento mais responsivo aos eventos do jogo. Ao atualizar continuamente a posição e direção do inimigo, o DashState
garante que o inimigo possa correr rapidamente e com precisão em direção ao jogador. O uso de parâmetros do animador assegura que as animações do inimigo estejam corretamente sincronizadas com seus movimentos, proporcionando uma experiência suave e realista.
Obrigado pelo seu feedback!