Підручник з двовимірної атаки ближнього бою для Unity

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

передумови

1. Налаштування проекту та сцени

  • Створіть новий двовимірний проект 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" до об’єкта hitbox.

Питання для адреси:

  1. Як хітбокс дізнається, коли активувати під час анімації?: хітбокс активується функцією 'Invoke' у 'MeleeAttack.cs' Сценарій . Час можна регулювати залежно від кадру, на який має приземлитися атака.
  2. Що станеться, якщо хітбокс зіткнеться з кількома ворогами одночасно?: за допомогою наданого сценарію 'Hitbox' кожен ворог із тегом "Enemy", який зіткнеться з хітбоксом буде знищено. Налаштуйте сценарій, щоб керувати пошкодженням або іншими ефектами.
  3. Чи можна змінити кнопку атаки замість клавіші пробілу?: Так, у сценарії 'MeleeAttack.cs' рядок if ('Input.GetKeyDown(KeyCode.Space)' ) перевіряє натиснення клавіші пробілу. Замініть 'KeyCode.Space' іншим значенням 'KeyCode', щоб змінити кнопку атаки.

Висновок

Цей посібник містить основну структуру для реалізації двовимірної атаки ближнього бою в Unity. Такі вдосконалення, як додавання звукових ефектів, візуального зворотного зв’язку та вдосконалення логіки виявлення влучень, можуть ще більше покращити досвід рукопашної атаки.

Рекомендовані статті
Сценарій стрільби з гармати на основі Raycast і снарядів для Unity
Як налаштувати контролер джойстика для руху в Unity
FPC Swimmer - всеосяжний ресурс Unity для занурення у воду
Сценарій вигляду миші для Unity
Як використовувати контролер Xbox в Unity
Скрипт для створення вимикача світла в Unity
Вибір одиниць у стилі RTS для Unity