Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Вивчайте Завершення Анімації Гравця | Система анімації Unity
Practice
Projects
Quizzes & Challenges
Quizzes
Challenges
/
Бійцівська гра в 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

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

Suggested prompts:

Запитайте мені питання про цей предмет

Сумаризуйте цей розділ

Покажіть реальні приклади

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