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

bookЗавершення Анімації Гравця

Анімація стрибка

Для стрибка ми використаємо дві анімації: оскільки гравець спочатку стрибає, а потім падає, потрібно створити дві анімації для цього. Перехід між ними буде базуватися на "y-швидкості" гравця; якщо y додатна — він стрибає, якщо від’ємна — падає. Значення y-швидкості можна отримати з компонента Rigidbody2D, прикріпленого до гравця.

animator.SetFloat("JumpingForce", rb.velocity.y);

Цей код присвоює значення параметру переходу між стрибком і падінням.

Пояснення коду

if (Input.GetKeyDown(KeyCode.Space) && isGrounded && animator.GetBool("isAttacking") == false)
{
    rb.AddForce(Vector2.up * jumpForce, ForceMode2D.Impulse);
    animator.SetBool("isJumping", true);
}

if (animator.GetBool("isJumping") == true && rb.velocity.y < 0 && isGrounded)
{
    animator.SetBool("isJumping", false);
}

animator.SetFloat("JumpingForce", rb.velocity.y);

isGrounded = Physics2D.Raycast(playerFeet.position, Vector2.down, 0.1f, groundLayer);
if (Input.GetKeyDown(KeyCode.Space) && isGrounded && animator.GetBool("isAttacking") == false)
{
    // Code to execute when the conditions are met
}

Цей рядок перевіряє, чи натиснута клавіша Space (Input.GetKeyDown(KeyCode.Space)), чи гравець знаходиться на землі (isGrounded), і чи гравець не атакує в даний момент (animator.GetBool("isAttacking") == false). Якщо всі умови виконуються, виконується наступний блок коду.

rb.AddForce(Vector2.up * jumpForce, ForceMode2D.Impulse);

Цей рядок додає вгору силу до компонента Rigidbody (rb), прикріпленого до гравця, імітуючи стрибок. Сила прикладається у напрямку вгору (Vector2.up) з величиною, визначеною jumpForce, і застосовується імпульсивно (ForceMode2D.Impulse).

animator.SetBool("isJumping", true);

Цей рядок встановлює булевий параметр "isJumping" у компоненті Animator у значення true, що активує анімацію стрибка.

if (animator.GetBool("isJumping") == true && rb.velocity.y < 0 && isGrounded)
{
    // Code to execute when the conditions are met
}

Цей рядок перевіряє, чи гравець наразі стрибає (animator.GetBool("isJumping") == true), вертикальна швидкість гравця від'ємна (rb.velocity.y < 0), і гравець знаходиться на землі (isGrounded). Якщо всі умови виконуються, буде виконано наступний блок коду.

animator.SetBool("isJumping", false);

Цей рядок встановлює булевий параметр "isJumping" у компоненті Animator у значення false, що вказує на завершення стрибка та падіння гравця, після чого анімація зміниться на стан очікування (idle).

isGrounded = Physics2D.Raycast(playerFeet.position, Vector2.down, 0.1f, groundLayer);

Цей рядок виконує випромінювання променя вниз від позиції ніг гравця (playerFeet.position), щоб визначити, чи знаходиться гравець на землі. Повертає true, якщо промінь перетинає будь-який колайдер шару ground на відстані до 0.1 одиниці, відповідно оновлюючи змінну isGrounded.

question mark

Що таке raycast у Unity?

Select the correct answer

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

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

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

Секція 1. Розділ 6

Запитати АІ

expand

Запитати АІ

ChatGPT

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

bookЗавершення Анімації Гравця

Анімація стрибка

Для стрибка ми використаємо дві анімації: оскільки гравець спочатку стрибає, а потім падає, потрібно створити дві анімації для цього. Перехід між ними буде базуватися на "y-швидкості" гравця; якщо y додатна — він стрибає, якщо від’ємна — падає. Значення y-швидкості можна отримати з компонента Rigidbody2D, прикріпленого до гравця.

animator.SetFloat("JumpingForce", rb.velocity.y);

Цей код присвоює значення параметру переходу між стрибком і падінням.

Пояснення коду

if (Input.GetKeyDown(KeyCode.Space) && isGrounded && animator.GetBool("isAttacking") == false)
{
    rb.AddForce(Vector2.up * jumpForce, ForceMode2D.Impulse);
    animator.SetBool("isJumping", true);
}

if (animator.GetBool("isJumping") == true && rb.velocity.y < 0 && isGrounded)
{
    animator.SetBool("isJumping", false);
}

animator.SetFloat("JumpingForce", rb.velocity.y);

isGrounded = Physics2D.Raycast(playerFeet.position, Vector2.down, 0.1f, groundLayer);
if (Input.GetKeyDown(KeyCode.Space) && isGrounded && animator.GetBool("isAttacking") == false)
{
    // Code to execute when the conditions are met
}

Цей рядок перевіряє, чи натиснута клавіша Space (Input.GetKeyDown(KeyCode.Space)), чи гравець знаходиться на землі (isGrounded), і чи гравець не атакує в даний момент (animator.GetBool("isAttacking") == false). Якщо всі умови виконуються, виконується наступний блок коду.

rb.AddForce(Vector2.up * jumpForce, ForceMode2D.Impulse);

Цей рядок додає вгору силу до компонента Rigidbody (rb), прикріпленого до гравця, імітуючи стрибок. Сила прикладається у напрямку вгору (Vector2.up) з величиною, визначеною jumpForce, і застосовується імпульсивно (ForceMode2D.Impulse).

animator.SetBool("isJumping", true);

Цей рядок встановлює булевий параметр "isJumping" у компоненті Animator у значення true, що активує анімацію стрибка.

if (animator.GetBool("isJumping") == true && rb.velocity.y < 0 && isGrounded)
{
    // Code to execute when the conditions are met
}

Цей рядок перевіряє, чи гравець наразі стрибає (animator.GetBool("isJumping") == true), вертикальна швидкість гравця від'ємна (rb.velocity.y < 0), і гравець знаходиться на землі (isGrounded). Якщо всі умови виконуються, буде виконано наступний блок коду.

animator.SetBool("isJumping", false);

Цей рядок встановлює булевий параметр "isJumping" у компоненті Animator у значення false, що вказує на завершення стрибка та падіння гравця, після чого анімація зміниться на стан очікування (idle).

isGrounded = Physics2D.Raycast(playerFeet.position, Vector2.down, 0.1f, groundLayer);

Цей рядок виконує випромінювання променя вниз від позиції ніг гравця (playerFeet.position), щоб визначити, чи знаходиться гравець на землі. Повертає true, якщо промінь перетинає будь-який колайдер шару ground на відстані до 0.1 одиниці, відповідно оновлюючи змінну isGrounded.

question mark

Що таке raycast у Unity?

Select the correct answer

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

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

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

Секція 1. Розділ 6
some-alt