Tutorial de ataque corpo a corpo 2D para Unity
O Unity Engine fornece uma plataforma extensa para a criação de jogos 2D e 3D. Um dos elementos fundamentais em muitos jogos de ação é o ataque corpo a corpo. Em um ambiente 2D, tal ataque geralmente consiste em um personagem balançando uma arma ou dando um soco, e pode ser realizado usando uma combinação de animações Unity, física e ferramentas de script.
Pré-requisitos
- Unity Motor instalado e configurado.
 - Familiaridade básica com interface Unity e espaço 2D.
 
1. Configurando o projeto e a cena
- Crie um novo projeto 2D Unity (se ainda não o fez).
 - Importe ou crie um sprite de personagem. Coloque-o na cena.
 
2. Configurando a animação de ataque corpo a corpo
- Na janela Projeto, clique com o botão direito e crie um "Animator Controller". Nomeie-o como "CharacterAnimator".
 - Atribua este animador ao personagem selecionando o personagem e arrastando o animador para o componente "Animator".
 - Abra a janela Animação. Com o personagem selecionado, crie uma nova animação chamada "MeleeAttack".
 - Para simplificar, vamos supor que este ataque seja um soco rápido. Anime o sprite para simular esta ação.
 
3. Criando o Hitbox de Ataque
- Adicione um GameObject vazio como filho do personagem. Isso funcionará como hitbox para o ataque.
 - Anexe a "Box Collider 2D" ao GameObject vazio. Ajuste seu tamanho e posição para corresponder ao local onde o personagem acertaria durante o soco.
 - Desative o hitbox desmarcando sua caixa "Active". Isso garante que ele seja ativado apenas durante a animação de ataque.
 
4. Script da lógica de ataque
- Crie um novo script, nomeie-o "MeleeAttack" e cole o código abaixo dentro dele:
 
'MeleeAttack.cs'
using UnityEngine;
public class MeleeAttack : MonoBehaviour
{
    private Animator animator;
    private BoxCollider2D hitbox;
    private void Start()
    {
        animator = GetComponent<Animator>();
        hitbox = transform.Find("HitboxGameObjectName").GetComponent<BoxCollider2D>();
    }
    private void Update()
    {
        if (Input.GetKeyDown(KeyCode.Space)) // Attack on Space key press.
        {
            animator.SetTrigger("MeleeAttack");
            Invoke("ActivateHitbox", 0.2f); // Activate hitbox after 0.2 seconds.
            Invoke("DeactivateHitbox", 0.4f); // Deactivate hitbox after 0.4 seconds.
        }
    }
    void ActivateHitbox()
    {
        hitbox.gameObject.SetActive(true);
    }
    void DeactivateHitbox()
    {
        hitbox.gameObject.SetActive(false);
    }
}- Anexe o script "MeleeAttack" ao personagem principal .
 - Ajuste os tempos de ativação e desativação do hitbox com base na animação.
 - Atribua o colisor hitbox à variável Hitbox .
 
5. Lidando com Colisões
- Altere as tags dos objetos do jogo inimigo para "Enemy".
 - Crie um novo script, nomeie-o "Hitbox" e cole o código abaixo dentro dele:
 
'Hitbox.cs'
using UnityEngine;
public class Hitbox : MonoBehaviour
{
    private void OnTriggerEnter2D(Collider2D collision)
    {
        if (collision.CompareTag("Enemy"))
        {
            // Damage or destroy the enemy.
            Destroy(collision.gameObject);
        }
    }
}- Anexe o script "Hitbox" ao objeto hitbox.
 
Perguntas a serem abordadas:
- Como o hitbox sabe quando ativar durante a animação?: O hitbox é ativado pela função 'Invoke' no script 'MeleeAttack.cs'. O tempo pode ser ajustado com base no quadro onde o ataque deve ocorrer.
 - O que acontece se o hitbox colidir com vários inimigos ao mesmo tempo?: Usando o script 'Hitbox' fornecido, cada inimigo com a tag "Enemy" que colidir com o hitbox será destruído. Ajuste o script para gerenciar danos ou outros efeitos.
 - O botão de ataque pode ser alterado a partir da tecla Espaço?: Sim, no script 'MeleeAttack.cs', a linha if ('Input.GetKeyDown(KeyCode.Space)') verifica o pressionamento da tecla Espaço. Substitua 'KeyCode.Space' por outro valor 'KeyCode' para alterar o botão de ataque.
 
Conclusão
Este guia fornece uma estrutura básica para implementar um ataque corpo a corpo 2D em Unity. Aprimoramentos como adição de efeitos sonoros, feedback visual e refinamento da lógica detecção de golpes podem aprimorar ainda mais a experiência de ataque corpo a corpo.