Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Вивчайте Атаки Гравця | Поведінка гравця
Бійцівська гра в Unity

bookАтаки Гравця

Gizmos

private void OnDrawGizmos()
{
    Gizmos.DrawLine(transform.position, ((Vector2)transform.position + 4f * Vector2.right * localScale.x));
}
  • private void OnDrawGizmos(): Оголошення методу для зворотного виклику OnDrawGizmos, що означає, що Unity автоматично викликає цей метод під час візуалізації Gizmos у вікні Scene;
  • Gizmos.DrawLine(...): Цей код малює лінію за допомогою Gizmos. Приймає дві точки як аргументи для визначення лінії;
  • transform.position: Поточна позиція GameObject, до якого прикріплено цей скрипт;
  • ((Vector2)transform.position + 4f * Vector2.right * localScale.x): Обчислює другу точку лінії. Додає до поточної позиції GameObject (transform.position) вектор, що простягається на 4 одиниці вправо (4f * Vector2.right). localScale.x використовується для коригування довжини та напрямку лінії залежно від масштабу GameObject по осі x.

Загалом цей код малює лінію у вікні Scene від поточної позиції GameObject до точки, що знаходиться на 4 одиниці вправо, з довжиною та напрямком, скоригованими відповідно до масштабу GameObject по осі x. Ми будемо використовувати це для візуалізації кожної зони атаки гравця.

Скрипт атаки

bool isAttacking;
float range;
[SerializeField] LayerMask enemyLayer;

private void Start()
{
    isAttacking = false;
    range = 0f;
}

public void StartAttacking(float attackRange)
{
    isAttacking = true;
    range = attackRange;
}

public void EndAttacking()
{
    isAttacking = false;
    range = 0f;
}

private void Update()
{
    if (isAttacking)
    {
        RaycastHit2D rayCastHit = Physics2D.Raycast(transform.position, Vector2.right * transform.localScale.x, range, enemyLayer);
        if (rayCastHit)
        {
            Debug.Log(rayCastHit.transform.name);
            isAttacking = false;
        }
    }
}

Під час ініціалізації атаки викликається функція StartAttacking, яка приймає дальність атаки як параметр. Оскільки кожна атака має різну дальність, атака починається та встановлюється відповідна дальність.

У функції Update, коли гравець атакує, створюється RayCast, який починається з позиції гравця, рухається у напрямку, в якому він дивиться, на відстань, що дорівнює дальності атаки, і фільтрує лише enemyLayer.

Якщо ми влучаємо у ворога, наразі будемо виводити його ім’я для налагодження, але в майбутньому отримаємо його здоров’я та завдамо йому шкоди. Додатково маємо функцію EndAttacking, яка завершить нашу атаку.

Події анімації

Додавання подій

У вікні Animation в Unity можна додавати події до анімаційних кліпів на певних кадрах. Клацніть правою кнопкою миші по кривій анімації або ключовому кадру, щоб додати подію анімації та вказати функцію й додаткові параметри.

Визначення функцій

Функції, які викликаються подіями анімації, мають бути публічними. Система Animation Event у Unity підтримує необов'язкові параметри типу float і string, автоматично викликаючи вказані функції під час відтворення анімації для синхронізації анімацій із логікою ігрового процесу та запуску різних дій.

Все було зрозуміло?

Як ми можемо покращити це?

Дякуємо за ваш відгук!

Секція 2. Розділ 3

Запитати АІ

expand

Запитати АІ

ChatGPT

Запитайте про що завгодно або спробуйте одне із запропонованих запитань, щоб почати наш чат

bookАтаки Гравця

Gizmos

private void OnDrawGizmos()
{
    Gizmos.DrawLine(transform.position, ((Vector2)transform.position + 4f * Vector2.right * localScale.x));
}
  • private void OnDrawGizmos(): Оголошення методу для зворотного виклику OnDrawGizmos, що означає, що Unity автоматично викликає цей метод під час візуалізації Gizmos у вікні Scene;
  • Gizmos.DrawLine(...): Цей код малює лінію за допомогою Gizmos. Приймає дві точки як аргументи для визначення лінії;
  • transform.position: Поточна позиція GameObject, до якого прикріплено цей скрипт;
  • ((Vector2)transform.position + 4f * Vector2.right * localScale.x): Обчислює другу точку лінії. Додає до поточної позиції GameObject (transform.position) вектор, що простягається на 4 одиниці вправо (4f * Vector2.right). localScale.x використовується для коригування довжини та напрямку лінії залежно від масштабу GameObject по осі x.

Загалом цей код малює лінію у вікні Scene від поточної позиції GameObject до точки, що знаходиться на 4 одиниці вправо, з довжиною та напрямком, скоригованими відповідно до масштабу GameObject по осі x. Ми будемо використовувати це для візуалізації кожної зони атаки гравця.

Скрипт атаки

bool isAttacking;
float range;
[SerializeField] LayerMask enemyLayer;

private void Start()
{
    isAttacking = false;
    range = 0f;
}

public void StartAttacking(float attackRange)
{
    isAttacking = true;
    range = attackRange;
}

public void EndAttacking()
{
    isAttacking = false;
    range = 0f;
}

private void Update()
{
    if (isAttacking)
    {
        RaycastHit2D rayCastHit = Physics2D.Raycast(transform.position, Vector2.right * transform.localScale.x, range, enemyLayer);
        if (rayCastHit)
        {
            Debug.Log(rayCastHit.transform.name);
            isAttacking = false;
        }
    }
}

Під час ініціалізації атаки викликається функція StartAttacking, яка приймає дальність атаки як параметр. Оскільки кожна атака має різну дальність, атака починається та встановлюється відповідна дальність.

У функції Update, коли гравець атакує, створюється RayCast, який починається з позиції гравця, рухається у напрямку, в якому він дивиться, на відстань, що дорівнює дальності атаки, і фільтрує лише enemyLayer.

Якщо ми влучаємо у ворога, наразі будемо виводити його ім’я для налагодження, але в майбутньому отримаємо його здоров’я та завдамо йому шкоди. Додатково маємо функцію EndAttacking, яка завершить нашу атаку.

Події анімації

Додавання подій

У вікні Animation в Unity можна додавати події до анімаційних кліпів на певних кадрах. Клацніть правою кнопкою миші по кривій анімації або ключовому кадру, щоб додати подію анімації та вказати функцію й додаткові параметри.

Визначення функцій

Функції, які викликаються подіями анімації, мають бути публічними. Система Animation Event у Unity підтримує необов'язкові параметри типу float і string, автоматично викликаючи вказані функції під час відтворення анімації для синхронізації анімацій із логікою ігрового процесу та запуску різних дій.

Все було зрозуміло?

Як ми можемо покращити це?

Дякуємо за ваш відгук!

Секція 2. Розділ 3
some-alt