2015-06-16 3 views
1

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

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; 

    } 
} 
+0

Правильный тег для Unity3D - это 'unity3d' – aggsol

+0

А я вижу, мой плохой, отмеченный в следующий раз! Благодарю. – CMA

ответ

0

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