Підручник з двовимірної атаки ближнього бою для Unity
Механізм Unity Engine надає широку платформу для створення як 2D, так і 3D ігор. Одним із основоположних елементів багатьох екшн-ігор є атака ближнього бою. У двовимірному середовищі така атака часто полягає в тому, що персонаж розмахує зброєю або кидає удар, і її можна здійснити за допомогою комбінації Unity анімації, фізики та інструментів сценаріїв.
передумови
- Unity Двигун встановлено та налаштовано.
- Базове знайомство з інтерфейсом Unity і 2D простором.
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);
}
}
- Приєднайте сценарій "MeleeAttack" до головного персонажа.
- Налаштуйте час активації та дезактивації хітбокса на основі анімації.
- Призначте коллайдер Hitbox змінній Hitbox.
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.
Питання для адреси:
- Як хітбокс дізнається, коли активувати під час анімації?: хітбокс активується функцією 'Invoke' у 'MeleeAttack.cs' Сценарій . Час можна регулювати залежно від кадру, на який має приземлитися атака.
- Що станеться, якщо хітбокс зіткнеться з кількома ворогами одночасно?: за допомогою наданого сценарію 'Hitbox' кожен ворог із тегом "Enemy", який зіткнеться з хітбоксом буде знищено. Налаштуйте сценарій, щоб керувати пошкодженням або іншими ефектами.
- Чи можна змінити кнопку атаки замість клавіші пробілу?: Так, у сценарії 'MeleeAttack.cs' рядок if ('Input.GetKeyDown(KeyCode.Space)' ) перевіряє натиснення клавіші пробілу. Замініть 'KeyCode.Space' іншим значенням 'KeyCode', щоб змінити кнопку атаки.
Висновок
Цей посібник містить основну структуру для реалізації двовимірної атаки ближнього бою в Unity. Такі вдосконалення, як додавання звукових ефектів, візуального зворотного зв’язку та вдосконалення логіки виявлення влучень, можуть ще більше покращити досвід рукопашної атаки.