Finalizar Animación del Jugador
Animación de salto
Para el salto, tendremos dos animaciones: como el jugador saltará y luego caerá, necesitamos crear dos animaciones para ello. La transición entre ellas se basará en la "velocidad y" del jugador; si y es positiva, está saltando, y si y es negativa, está cayendo. Podemos obtener la velocidad y del componente Rigidbody2D adjunto al jugador.
animator.SetFloat("JumpingForce", rb.velocity.y);
Este código asigna el valor para el parámetro de transición entre el salto y la caída.
Explicación del código
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
}
Esta línea verifica si se presiona la tecla Espacio (Input.GetKeyDown(KeyCode.Space)
), el jugador está en el suelo (isGrounded
) y el jugador no está atacando actualmente (animator.GetBool("isAttacking") == false
). Si se cumplen todas las condiciones, se ejecutará el siguiente bloque de código.
rb.AddForce(Vector2.up * jumpForce, ForceMode2D.Impulse);
Esta línea añade una fuerza hacia arriba al componente Rigidbody (rb
) adjunto al jugador, simulando un salto. La fuerza aplicada es en la dirección ascendente (Vector2.up
) con una magnitud definida por jumpForce
, y se aplica de manera impulsiva (ForceMode2D.Impulse
).
animator.SetBool("isJumping", true);
Esta línea establece el parámetro booleano "isJumping" en el componente Animator a verdadero, activando la animación de salto.
if (animator.GetBool("isJumping") == true && rb.velocity.y < 0 && isGrounded)
{
// Code to execute when the conditions are met
}
Esta línea verifica si el jugador está saltando actualmente (animator.GetBool("isJumping") == true
), si la velocidad vertical del jugador es negativa (rb.velocity.y < 0
), y si el jugador está en el suelo (isGrounded
). Si se cumplen todas las condiciones, se ejecutará el siguiente bloque de código.
animator.SetBool("isJumping", false);
Esta línea establece el parámetro booleano "isJumping" en el componente Animator a false, indicando que el jugador ha terminado de saltar y caer, y cambiará su animación a idle.
isGrounded = Physics2D.Raycast(playerFeet.position, Vector2.down, 0.1f, groundLayer);
Esta línea lanza un rayo hacia abajo desde la posición de los pies del jugador (playerFeet.position
) para detectar si el jugador está en el suelo. Devuelve true si el rayo intersecta con algún collider en la capa de suelo dentro de una distancia de 0.1 unidades, actualizando la variable isGrounded
en consecuencia.
¡Gracias por tus comentarios!
Pregunte a AI
Pregunte a AI
Pregunte lo que quiera o pruebe una de las preguntas sugeridas para comenzar nuestra charla
Awesome!
Completion rate improved to 3.33
Finalizar Animación del Jugador
Desliza para mostrar el menú
Animación de salto
Para el salto, tendremos dos animaciones: como el jugador saltará y luego caerá, necesitamos crear dos animaciones para ello. La transición entre ellas se basará en la "velocidad y" del jugador; si y es positiva, está saltando, y si y es negativa, está cayendo. Podemos obtener la velocidad y del componente Rigidbody2D adjunto al jugador.
animator.SetFloat("JumpingForce", rb.velocity.y);
Este código asigna el valor para el parámetro de transición entre el salto y la caída.
Explicación del código
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
}
Esta línea verifica si se presiona la tecla Espacio (Input.GetKeyDown(KeyCode.Space)
), el jugador está en el suelo (isGrounded
) y el jugador no está atacando actualmente (animator.GetBool("isAttacking") == false
). Si se cumplen todas las condiciones, se ejecutará el siguiente bloque de código.
rb.AddForce(Vector2.up * jumpForce, ForceMode2D.Impulse);
Esta línea añade una fuerza hacia arriba al componente Rigidbody (rb
) adjunto al jugador, simulando un salto. La fuerza aplicada es en la dirección ascendente (Vector2.up
) con una magnitud definida por jumpForce
, y se aplica de manera impulsiva (ForceMode2D.Impulse
).
animator.SetBool("isJumping", true);
Esta línea establece el parámetro booleano "isJumping" en el componente Animator a verdadero, activando la animación de salto.
if (animator.GetBool("isJumping") == true && rb.velocity.y < 0 && isGrounded)
{
// Code to execute when the conditions are met
}
Esta línea verifica si el jugador está saltando actualmente (animator.GetBool("isJumping") == true
), si la velocidad vertical del jugador es negativa (rb.velocity.y < 0
), y si el jugador está en el suelo (isGrounded
). Si se cumplen todas las condiciones, se ejecutará el siguiente bloque de código.
animator.SetBool("isJumping", false);
Esta línea establece el parámetro booleano "isJumping" en el componente Animator a false, indicando que el jugador ha terminado de saltar y caer, y cambiará su animación a idle.
isGrounded = Physics2D.Raycast(playerFeet.position, Vector2.down, 0.1f, groundLayer);
Esta línea lanza un rayo hacia abajo desde la posición de los pies del jugador (playerFeet.position
) para detectar si el jugador está en el suelo. Devuelve true si el rayo intersecta con algún collider en la capa de suelo dentro de una distancia de 0.1 unidades, actualizando la variable isGrounded
en consecuencia.
¡Gracias por tus comentarios!