Анимация проблемы с анимацией персонажей работает неправильно

привет, я работаю над мини-2D-игрой в единстве, и я только что создал 2D-персонажа и некоторую анимацию (Up_Idle,Down_Idle,Right_Idle,Left_Idle/Up_run,Down_run,Right_run,Left_run) проблема в том, что эта анимация работает неправильно (например, когда я нажимаю стрелку вверх, персонаж не воспроизводит анимацию Up_run, но он воспроизводит анимацию Up_run и left_run одновременно)

вот скриншот:

введите здесь описание изображения

вот код:

using UnityEngine;
using System.Collections;

public class movement : MonoBehaviour
{

    public float speedX =1f;

    public float speedY =1f;

    Animator animator;

    void Start()
    {
        animator = GetComponent <Animator> ();
    }

    void Update()
    {
        if (Input.GetKey (KeyCode.UpArrow)) {
                    transform.Translate (new Vector2 (speedX, speedY) * Time.deltaTime);
                    animator.SetFloat ("Up", 1);
                    return;
        } else {
            animator.SetFloat ("Up", 0);
        }

        if (Input.GetKey (KeyCode.DownArrow)) {
            transform.Translate (new Vector2 (-speedX, -speedY) * Time.deltaTime);
            animator.SetFloat ("Down", 1);
            return;

        } else {
            animator.SetFloat ("Down", 0);
        }

        if (Input.GetKey (KeyCode.RightArrow)) {
            transform.Translate (new Vector2 (speedX, -speedY) * Time.deltaTime);
            animator.SetFloat ("Right", 1);
            return;
        } else {
            animator.SetFloat ("Right", 0);
        }

        if (Input.GetKey (KeyCode.LeftArrow)) {
            transform.Translate (new Vector2 (-speedX, speedY) * Time.deltaTime);
            animator.SetFloat ("Left", 1);
            return;
        } else {
            animator.SetFloat ("Left", 0);
        }
    } 
}

person Khalid Redfox    schedule 02.12.2015    source источник
comment
Ммм.. Я тоже немного новичок в Unity... но я не вижу всех переходов. Я не знаю, есть ли способ сменить анимацию без перехода... но вы сказали, что левая анимация как-то работает. Мой совет будет проверять переходы. Но я могу ошибаться. :О   -  person ゴスエン ヘンリ    schedule 03.12.2015
comment
как я читаю скриншот: холостой ход по умолчанию. только аниматор.SetFloat(Up, 1); вызовет что-то для run_up. остальные анимации выглядят недоступными. Мои анимации выглядят как ад с кучей переходов, ха-ха   -  person ゴスエン ヘンリ    schedule 03.12.2015


Ответы (2)


частный аниматор Аниматор;

// Use this for initialization
void Start()
{
    animator = this.GetComponent<Animator>();

}

// Update is called once per frame
void Update()
{

    var vertical = Input.GetAxis("Vertical");
    var horizontal = Input.GetAxis("Horizontal");

    if (vertical > 0)
    {
        animator.SetInteger("Direction", 1);
         transform.Translate(Vector2.up* Time.deltaTime);
        //animator.SetInteger("Direction", 2);
        animator.SetFloat("Speed", 1.0f);
    }
    else if (vertical < 0)
    {
        animator.SetInteger("Direction", 3);
        transform.Translate(Vector3.down* Time.deltaTime);
        //animator.SetInteger("Direction", 0);
        animator.SetFloat("Speed", 1.0f);
    }
    else if (horizontal < 0)
    {
        animator.SetInteger("Direction", 4);

          transform.Translate(Vector3.left* Time.deltaTime);

        //transform.Translate(Vector2.right* Time.deltaTime);
        animator.SetFloat("Speed", 1.0f);
    }
    else if (horizontal > 0)
    {

    animator.SetInteger("Direction", 2);
    transform.Translate(Vector2.right* Time.deltaTime);
     // animator.SetInteger("Direction", 4);
    animator.SetFloat("Speed", 1.0f);
    }
    else
    {
      //animator.SetInteger("Direction", 6);
        animator.SetFloat("Speed", 0.0f);

    }
}
person Deepika C P    schedule 09.02.2016

Если одновременно воспроизводятся две анимации, это означает, что условие используется как переход для 2 графиков. Например, ваш idle_left --> run_left и idle_up --> run_up имеют, безусловно, одно и то же условие перехода (я полагаю, Up == 1.0). Если вы хотите, чтобы анимации были независимыми, у них не должно быть одинаковых условий перехода.

Надеюсь, поможет.

person Lizlotte    schedule 05.12.2015