Переходы Unity C# Animator

Я пытаюсь заставить моих врагов запускать анимацию, чтобы играть, когда он движется, и переключаться обратно в режим ожидания, когда он останавливается. Однако мой текущий код, похоже, этого не делает, и вместо этого мой враг постоянно остается в состоянии ожидания. Я проверил, установлены ли мои переменные, но, похоже, они просто не фильтруются в моем аниматоре для выполнения переходов. У меня также есть ошибка, которая, кажется, не останавливает игру, но появляется в консоли. Ошибка Controller 'Pirate': Transition " in state 'Idle_Pirate' uses parameter 'walking' which is not compatible with condition type.. Я предполагаю, что это виновник, но, попробовав несколько разных предложений из Google, я изо всех сил пытаюсь найти решение. Это код из скрипта, прикрепленного к моему врагу. Извините, если это немного грубо, я все еще учусь. Любая помощь приветствуется.

using UnityEngine;
using System.Collections;

public class AI : MonoBehaviour {

    public float walkSpeed = 2.0f;
    public float wallLeft = 0.0f;
    public float wallRight = 2.0f;

    float walkingDirection = 1.0f;
    Vector3 walkAmount;
    float timeCheck = 0.0f;
    float walkCheck = 0.0f;

    public float maxSpeed = 5f;
    bool facingRight = true;
    bool idle = true;

    Animator anim;

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

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



    }

    void Update () {
        if (timeCheck >= 2.0f) {
            walkAmount.x = walkingDirection * walkSpeed * Time.deltaTime;
            if (walkingDirection > 0.0f && transform.position.x >= wallRight) {
                walkingDirection = -1.0f;
                Flip ();
            } else if (walkingDirection < 0.0f && transform.position.x <= wallLeft) {
                walkingDirection = 1.0f;
                Flip ();
            }
            walkCheck = walkCheck + Time.deltaTime;
            idle = false;
        }

        if (walkCheck >= 2.0f) {
            idle = true;
            walkAmount.x = 0;
            timeCheck = 0.0f;
            walkCheck = 0.0f;
        }

        timeCheck = timeCheck + Time.deltaTime;
        transform.Translate(walkAmount);
        anim.SetBool ("walking", idle);

    }

    void Flip () {

        facingRight = !facingRight;
        Vector3 theScale = transform.localScale;
        theScale.x *= -1;
        transform.localScale = theScale;

    }
}

person CMA    schedule 16.06.2015    source источник
comment
Правильный тег для Unity3D — unity3d.   -  person aggsol    schedule 17.06.2015
comment
Ах, я вижу, мой плохой, отметил для следующего раза! Спасибо.   -  person CMA    schedule 18.06.2015


Ответы (1)


В любом случае, я сам разобрался, оказывается, я использовал свою анимацию в своем аниматоре вместо своих спрайтов, должно быть, в какой-то момент перетащил не то. Спасибо тем, кто все же нашел время прочитать.

person CMA    schedule 16.06.2015