Buenas!! Llego un poco tarde pero quería aportar una ayuda.
Como bien comentan @FNP hay que trabajar con los sprites de las distintas partes del cuerpo, te pongo un ejemplo de un juego que seguro que conoces.
Aquí los sprites de las piernas están dibujados independientes a los del torso, por lo que solo se mostraran las animaciones correspondientes a la acción que realices mientras juegas.
¿Y esto como se lleva a Unity? Te pongo un ejemplo de como lo hago yo y creo que es lo más sencillo.
Creas tu objeto Player, con sus componentes necesarios, script - "PlayerController", Rigibody, BoxCollider, etc. y eliminas el SpriteRenderer y el Animator. Creas dos objetos hijos (TopPart, BotPart) con los componentes SpriteRenderer y el Animator. Con esto se consigue tener 2 componentes Animator, uno para cada parte del cuerpo, por lo que las animaciones van a ser independientes una de la otra (puedes correr o saltar y hacer la misma animación de disparo). Y ya solo sería unirlo a través de código.
Como ves a la hora de realizar la acción de disparo, solo necesito acceder al Animator que controla el torso.
Espero haya quedado claro. Un saludo!!
Como bien comentan @FNP hay que trabajar con los sprites de las distintas partes del cuerpo, te pongo un ejemplo de un juego que seguro que conoces.
Aquí los sprites de las piernas están dibujados independientes a los del torso, por lo que solo se mostraran las animaciones correspondientes a la acción que realices mientras juegas.
¿Y esto como se lleva a Unity? Te pongo un ejemplo de como lo hago yo y creo que es lo más sencillo.
Creas tu objeto Player, con sus componentes necesarios, script - "PlayerController", Rigibody, BoxCollider, etc. y eliminas el SpriteRenderer y el Animator. Creas dos objetos hijos (TopPart, BotPart) con los componentes SpriteRenderer y el Animator. Con esto se consigue tener 2 componentes Animator, uno para cada parte del cuerpo, por lo que las animaciones van a ser independientes una de la otra (puedes correr o saltar y hacer la misma animación de disparo). Y ya solo sería unirlo a través de código.
public Animator topAnimator;
public Animator botAnimator;
public SpriteRenderer TopSpritePart;
public SpriteRenderer BotSpritePart;
void MovePlayer()
{
float move = Input.GetAxisRaw("Horizontal") * moveSpeed * Time.fixedDeltaTime;
Vector3 targetVelocity = new Vector2(move, rb.velocity.y);
rb.velocity = Vector3.SmoothDamp(rb.velocity, targetVelocity, ref x_Velocity, xy_smooth);
topAnimator.SetFloat("speed", Mathf.Abs(move));
botAnimator.SetFloat("speed", Mathf.Abs(move));
if (move > 0 && !facingRight || move < 0 && facingRight)
FlipPlayer();
}
void Fire()
{
if (Input.GetKeyDown(KeyCode.X))
{
Shoot();
topAnimator.SetTrigger("fire");
}
}
Como ves a la hora de realizar la acción de disparo, solo necesito acceder al Animator que controla el torso.
Espero haya quedado claro. Un saludo!!
Contento de formar parte del foro, llevo algunas semanas ojeándolo y esta genial el ambiente y la información disponible.