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