Почему мои анимации задом наперед в Unity? - PullRequest
0 голосов
/ 31 декабря 2018

Хорошо, так вот видео, показывающее проблему, которая самоочевидна https://youtu.be/7701UK0ijy4

Моя проблема заключается в том, что когда я переключаюсь на анимацию «Бегущий левый», он все равно воспроизводит анимацию «Бегущий правый» вместо

Прежде чем читать этот список, просто знайте, ни один, если он имел какой-либо эффект.До сих пор я пытался установить Speed ​​of Main_Run_Left в -1.Я установил флажок Зеркало.Я удалил все анимации и сбросил их.

Редактировать: я переключил анимацию Running_Left с другой анимацией монстров, и это вроде как сработало?как в нем играли running_Left с другой анимацией монстра?Как я сказал вкратце, он вернулся к бегу вправо, а налево.

public Animator anim;


// Update is called once per frame
void Update()
{
    horizontalMove = Input.GetAxisRaw("Horizontal") * runSpeed;

    if (horizontalMove > .001)
    {
        anim.SetBool("Running Right", true);
        anim.SetBool("Running Left", false);
        anim.SetBool("Chillin", false);
    }
    else if (horizontalMove < -.001)
    {
        anim.SetBool("Running Left", true);
        anim.SetBool("Running Right", false);
        anim.SetBool("Chillin", false);
    }
    else
    {
        anim.SetBool("Chillin", true);
        anim.SetBool("Running Left", false);
        anim.SetBool("Running Right", false);

    }

1 Ответ

0 голосов
/ 31 декабря 2018

То, что вы делаете, довольно странно.У вас есть анимация при ходьбе вправо и анимация при ходьбе влево, даже если они отражают друг друга.Как насчет удаления анимации при ходьбе влево и переименования другой в просто «Ходьба»?Затем удалите все bool в вашем аниматоре и замените их на один, называемый «Перемещение».Условие перехода от чилина к ходьбе - истинно ли «подвижное» bool, и наоборот.Затем в коде вы переворачиваете спрайт, когда его горизонталь меньше нуля.Ниже я разместил скрипт, который показывает, о чем я говорю.

using UnityEngine;

public class Player : MonoBehaviour
{
[SerializeField]
private float _speed;

private Rigidbody2D _rb;
private Animator _anim;
private SpriteRenderer _sprite;

void Start()
{
    _rb = GetComponent<Rigidbody2D>();
    _anim = GetComponent<Animator>();
    _sprite = GetComponent<SpriteRenderer>();
}

void FixedUpdate()
{
    Move();
}

private void Move()
{
    float horizontal = Input.GetAxis("Horizontal");
    float vertical = Input.GetAxis("Vertical");
    Vector2 movement = new Vector2(horizontal, vertical);
    _rb.velocity = movement * _speed;

    _anim.SetBool("Moving", horizontal != 0);

    if (horizontal != 0)
        Flip(horizontal > 0);

}

private void Flip(bool facingRight)
{
    _sprite.flipX = !facingRight;
}

}
...