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

bookEnviar Projétil

A classe Projectile é responsável por gerenciar o comportamento dos projéteis que o inimigo pode lançar no jogador. Esta classe lida com a configuração da direção e velocidade do projétil, atualizando seu movimento e lidando com colisões.

Método Setup

Propósito: Este método configura o estado inicial do projétil.

Parâmetros: Recebe um parâmetro Vector2 direction para definir a direção que o projétil irá percorrer.

Ações: Define a direção do projétil, obtém o componente Rigidbody2D anexado ao projétil, rotaciona o projétil para enfrentar a direção que irá percorrer e agenda a destruição do projétil após 6 segundos para evitar que ele exista indefinidamente.

Método Update

Propósito: Este método atualiza o movimento do projétil.

Ações: Define a velocidade do Rigidbody2D para mover o projétil na direção especificada na velocidade especificada.

Método OnTriggerEnter2D

Propósito: Este método lida com colisões com outros objetos.

Parâmetros: Recebe um parâmetro Collider2D collision para detectar colisões.

Ações: Registra o nome do objeto com o qual o projétil colidiu, verifica se o projétil colidiu com um objeto marcado como "Player" e, se o objeto tiver um componente que implementa a interface IGetAttacked, chama o método GetAttacked nesse componente para causar dano. Finalmente, destrói o projétil após atingir o jogador.

Por Que Fizemos Assim

Modular e Reutilizável: A classe Projectile é projetada para ser modular e reutilizável para qualquer tipo de projétil que o inimigo possa usar. Ao definir a direção e a velocidade, vários projéteis com comportamentos diferentes podem ser criados.

Manuseio de Movimento Eficiente: Usar o componente Rigidbody2D para movimento garante que o projétil se comporte de acordo com o sistema de física do Unity, proporcionando um movimento suave e realista.

Detecção de Colisão e Manuseio de Dano: O método OnTriggerEnter2D garante que o projétil possa detectar colisões com o jogador e aplicar dano adequadamente, tornando a interação entre o projétil e o jogador eficaz.

Classe SendProjectileState

A classe SendProjectileState é um estado específico que lida com o comportamento do inimigo quando ele lança um projétil. Esta classe herda da classe State e inclui métodos para iniciar, terminar e iniciar a ação de ataque do projétil.

Construtor

O construtor inicializa o SendProjectileState com um Animator para animações e uma ação para enviar o projétil. Ele define esses valores para as variáveis membro correspondentes.

Método StartState

Este método define isStateFinished como false e aciona a animação do projétil definindo o parâmetro booleano "projectil" no animador como true.

Método StartAction

Este método chama sendProjectileFunc, que executa a ação definida para enviar o projétil. Este método é tipicamente chamado por um evento do animador para sincronizar o lançamento do projétil com a animação.

Método EndState

Este método para a animação do projétil definindo o parâmetro booleano "projectil" no animador como false.

Por Que Fizemos Assim

Modular e Reutilizável: A classe SendProjectileState é projetada para ser modular, permitindo a integração flexível de diferentes comportamentos de envio de projéteis através do uso de System.Action.

Integração de Animação: Ao usar parâmetros do animador, o estado garante que o lançamento do projétil seja sincronizado com a animação correspondente, proporcionando uma experiência suave e realista.

Função Enviar Projétil

O método SendProjectile é responsável por criar e lançar um projétil em direção ao jogador. Este método calcula a direção do inimigo para o jogador, instancia o projétil e o configura para se mover na direção calculada.

Definição do Método e Componentes

Definição do Método: void SendProjectile(): Este método não retorna um valor e é projetado para lidar com o lançamento do projétil.

Componentes: Vector2 direction = (player.position - transform.position).normalized; Esta linha calcula a direção do inimigo para o jogador subtraindo a posição do inimigo da posição do jogador. A parte .normalized garante que o vetor de direção tenha um comprimento de 1, tornando-o um vetor unitário que indica apenas a direção.

Instantiate(projectile, projectileSendingPosition.position, Quaternion.identity).Setup(direction); Esta linha cria uma nova instância do projétil na posição especificada (projectileSendingPosition.position) sem rotação (Quaternion.identity). O método Setup é chamado no projétil instanciado para definir sua direção.

Ligação com o Animator do Unity

Estamos chamando a função StartAction usando eventos do animator. Isso nos permite especificar o quadro exato dentro da animação do inimigo no qual queremos que o projétil seja enviado. Como a animação consiste em muitos quadros, é importante identificar o momento preciso para que esta ação ocorra.

O que acontece quando o projétil colide com um objeto de jogo marcado como "Player"?

O que acontece quando o projétil colide com um objeto de jogo marcado como "Player"?

Selecione a resposta correta

Tudo estava claro?

Como podemos melhorá-lo?

Obrigado pelo seu feedback!

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