2015-05-12 4 views
2

Я все еще новичок в Unity и кодировании в целом, поэтому имейте это в виду! Я тоже задал этот вопрос на форумах Unity, но люди сказали мне, что код должен скомпилировать и что они пропадают, поэтому я надеюсь найти здесь несколько ответов!Невозможно заставить анимацию работать. Ошибка аниматора Setfloat

Я пытаюсь получить мою движущуюся анимацию, чтобы играть, как только в качестве параметра, который я называется скорость> 0,1

я получаю эту ошибку и после некоторого Googling я до сих пор не понять.

Assets/Scripts/PlayerMovement.cs(28,26): error CS1061: Type `Animator' does not contain a definition for `SetFloat' and no extension method `SetFloat' of type `Animator' could be found (are you missing a using directive or an assembly reference?) 

Любая идея, что может быть неправильным?

Вот мой сценарий:

using UnityEngine; 
using System.Collections; 

public class PlayerMovement : MonoBehaviour { 
    public float speed; 
    public float floatDown; 
    public Boundary boundary; 
    Animator animator; 

    [System.Serializable] 
    public class Boundary{ 
     public float xMin, xMax, zMin, zMax, yMin, yMax; 
    } 
    // Use this for initialization. 
    void Start() { 
     gameObject.tag = "Player"; 
     animator = GetComponent<Animator>(); 
    } 

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

     //Basic left, right, up, down, movement. 
     float moveHorizontal = Input.GetAxis("Horizontal"); 
     float moveVertical = Input.GetAxis ("Jump"); 
     animator.SetFloat ("Speed", moveHorizontal); 
     Vector3 movement = new Vector3 (moveHorizontal, moveVertical, 0.0f); 
     GetComponent<Rigidbody>().velocity = movement * speed; 

     //Clamping so Bubbleboy doesnt exit screen. 
     GetComponent<Rigidbody>().position = new Vector3 
     (
     Mathf.Clamp (GetComponent<Rigidbody>().position.x, boundary.xMin, boundary.xMax), 
     Mathf.Clamp (GetComponent<Rigidbody>().position.y, boundary.yMin, boundary.yMax), 
     Mathf.Clamp (GetComponent<Rigidbody>().position.z, boundary.zMin, boundary.zMax) 
     ); 

     //Using relativeForce to simulate floating down. 
     if (Input.GetKey (KeyCode.S)) { 
      GetComponent<Rigidbody>().AddRelativeForce (0, floatDown, 0); 
     } 
    } 
} 
+0

Вы пытались сменить 'Animator' на' UnityEngine.Animator'? –

+0

Вы уверены, что вы компилируете его с Unity, а не Visual Studio, например? Вы видите эту ошибку в Unity's Console? –

+0

Это решило ошибку! Меняя его на единицу, он решил его решить, моя анимация не работает, но я думаю, что это исправление отсюда! –

ответ

1

Убедитесь, что у вас нет сценария где-то под названием «Аниматор». Если у вас есть сценарий проекта с тем же именем, Unity предпочтет ваш скрипт над классом аниматора, который является частью Unity.

+0

Привет, спасибо за ответ! Я удостоверился, что у меня не было другого класса Animator где-нибудь или сценарий, так что проблема все еще сохраняется –

+0

Хмм. Нет веских оснований для этого вести себя тогда. A - можете ли вы добавить дополнительную информацию о своем проекте, созданном здесь, в комментариях? (Фотографии списков активов/названий сценариев и т. Д.) B- Какая версия единства это? –

+2

Вот изображение инспектора игрока, который должен иметь анимацию, и список сценариев, которые у меня есть сейчас: http://i.imgur.com/CUtND9a.png –

1

Идя вы будете эталонное изображение: http://i.imgur.com/CUtND9a.png

У вас есть ошибки на 2 сценариев. По моему опыту работы с единством, это может привести к тому, что визуальная студия/моно разработают, чтобы вызвать «ложные ошибки».

Указанная ошибка, скорее всего, вызвана тем, что один из скриптов содержит (несвязанную) ошибку.

Причина, по которой я думаю об этом, заключается в том, что я скомпилировал ваш код в моем единстве, никаких ошибок не появилось. Идя по изображению, которое вы предоставили, и зная, что Unity ведет себя сдержанно, когда у вас есть ошибки в вашей идее, это, скорее всего, так.

Edit:

Ах да чуть не забыл;

Если это так, вы можете легко заметить его при вводе в IDE. Автозаполнение (IntelliSense) должно быть испорчено и давать методы по умолчанию.

+0

Возможно, это так. Ошибки Fake довольно распространены во всех IDE, хотя я никогда не видел их в файлах. –

+0

По моему опыту эта ошибка возникает, когда ссылка на скрипт повреждена, а не когда у вас есть ошибки компиляции. Когда вы компилируете ошибки в скрипте, он просто отображается в редакторе, как если бы он был предыдущей версией. –

+0

Если ссылка на скрипт повреждена, он должен сказать «Отсутствующий скрипт». Этот случай кажется ошибкой. – Syntasu

Смежные вопросы