Атаки Гравця
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, автоматично викликаючи вказані функції під час відтворення анімації для синхронізації анімацій із логікою ігрового процесу та запуску різних дій.
Дякуємо за ваш відгук!
Запитати АІ
Запитати АІ
Запитайте про що завгодно або спробуйте одне із запропонованих запитань, щоб почати наш чат
Awesome!
Completion rate improved to 3.33
Атаки Гравця
Свайпніть щоб показати меню
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, автоматично викликаючи вказані функції під час відтворення анімації для синхронізації анімацій із логікою ігрового процесу та запуску різних дій.
Дякуємо за ваш відгук!