Учебное пособие по 2D-атакам в ближнем бою для Unity

Unity Engine предоставляет обширную платформу для создания как 2D, так и 3D-игр. Одним из основополагающих элементов во многих экшн-играх является атака в ближнем бою. В 2D-среде такая атака часто состоит из того, что персонаж размахивает оружием или наносит удар, и ее можно выполнить с помощью комбинации анимации Unity, физики и инструментов сценариев.

Предварительные условия

1. Настройка проекта и сцены

  • Создайте новый 2D-проект Unity (если еще этого не сделали).
  • Импортируйте или создайте спрайт персонажа. Поместите его в сцену.

2. Настройка анимации атаки ближнего боя

  • В окне проекта щелкните правой кнопкой мыши и создайте "Animator Controller". Назовите его "CharacterAnimator".
  • Назначьте этот аниматор персонажу, выбрав персонажа и перетащив аниматор на компонент "Animator".
  • Откройте окно «Анимация». Выбрав персонажа, создайте новую анимацию с именем "MeleeAttack".
  • Для простоты предположим, что эта атака представляет собой быстрый удар. Анимируйте спрайт, чтобы имитировать это действие.

3. Создание хитбокса атаки

  • Добавьте пустой GameObject в качестве дочернего элемента персонажа. Это будет хитбокс для атаки.
  • Прикрепите и "Box Collider 2D" к пустому GameObject. Отрегулируйте его размер и положение так, чтобы оно соответствовало месту удара персонажа во время удара.
  • Деактивируйте хитбокс, сняв флажок "Active". Это гарантирует, что он активируется только во время анимации атаки.

4. Сценарий логики атаки

  • Создайте новый скрипт, назовите его "MeleeAttack" и вставьте в него приведенный ниже код:

'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);
    }
}

5. Обработка столкновений

  • Измените теги игровых объектов противника на "Enemy".
  • Создайте новый скрипт, назовите его "Hitbox" и вставьте в него приведенный ниже код:

'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);
        }
    }
}
  • Прикрепите скрипт "Hitbox" к объекту хитбокса.

Вопросы для решения:

  1. Как хитбокс узнает, когда активироваться во время анимации?: хитбокс активируется функцией 'Invoke' в скрипте 'MeleeAttack.cs'. Время можно отрегулировать в зависимости от кадра, в котором должна произойти атака.
  2. Что произойдет, если хитбокс столкнется с несколькими врагами одновременно? : Используя предоставленный скрипт 'Hitbox', каждый враг с тегом "Enemy", который сталкивается с хитбоксом, будет уничтожен. Настройте сценарий для управления уроном или другими эффектами.
  3. Можно ли изменить кнопку атаки с помощью клавиши «Пробел»? : Да, в сценарии 'MeleeAttack.cs' строка if ('Input.GetKeyDown(KeyCode.Space)') проверяет нажатие клавиши «Пробел».. Замените 'KeyCode.Space' на другое значение 'KeyCode', чтобы изменить кнопку атаки.

Заключение

В этом руководстве представлены базовые принципы реализации 2D-атаки в ближнем бою в Unity. Такие улучшения, как добавление звуковых эффектов, визуальная обратная связь и уточнение логики обнаружения попаданий, могут еще больше улучшить впечатления от атак в ближнем бою.

Рекомендуемые статьи
Учебное пособие по таймеру обратного отсчета для Unity
FPC Swimmer — комплексный ресурс Unity для погружения в водную среду
Скрипт для создания выключателя света в Unity
Скрипт стрельбы из огнестрельного оружия с использованием Raycast и снарядов для Unity
Как настроить джойстик для движения в Unity
Учебное пособие по созданию снимков экрана Unity Capture
Zone Controller Pro — пакет хранилища ресурсов Unity