2015-07-27 2 views
0

Я новичок в Unity. Я использую последнюю версию Unity, 5.1.2f1 Personal.Как начать анимацию из специального кадра

Я хочу запустить анимацию из специального кадра. Не с первого раза.

Итак, я искал и получил эти ответы;

http://answers.unity3d.com/questions/181903/jump-to-a-specific-frame-in-an-animation.html

http://answers.unity3d.com/questions/425985/set-the-current-time-frame-of-a-mecanim-animation.html

Но в моем проекте, это не сработало! И я потратил свое время на решение этой проблемы.

Ситуация такова. Я создаю игру Rockman (Megaman).

И я должен реализовать, когда персонаж Нулевой использовать саблю при падении,

falling_shot анимация начинается с кадра.

Посмотрите эту картинку, чтобы помочь вам объяснить, что я должен делать.

enter image description here

Это простой вопрос. Если я могу получить доступ к каждому кадру напрямую с индексом массива анимации, то мне нужно просто установить индекс воспроизведения в индекс следующего кадра.

. Это не сложно.

Но в единстве, я не могу получить доступ к анимации компонентов непосредственно

, и я обнаружил, что я должен использовать оператор [дата], как;

// set start frame with time 0.5 
animation["JumpShotA"].time = 0.5f; 

Однако это не сработало. Вот мой код, который воспроизводит анимацию «JumpShotAir».

Это не код, который изменяет рамку анимации, а просто воспроизводит анимацию JumpShotAir.

using UnityEngine; 
using System.Collections; 

public class ZController : MonoBehaviour { 
    Animator _animator; 

    // Use this for initialization 
    void Start() { 
     _animator = GetComponent<Animator>(); 
     var animation = GetComponent<Animation>(); 
     var jumpShotA = animation["JumpShotA"]; 
     animation.clip = jumpShotA.clip; 
     animation.Play(); 
    } 

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

    } 
} 

Но этот код выглядит следующим образом; сообщение об ошибке NullReferenceException: GetRef.

enter image description here

Я действительно не знаю. Что я не так? Есть ли какие-либо проблемы в моем коде?

Могу ли я получить доступ к массиву компонента анимации напрямую? Как я могу получить к нему доступ?

Если вы хотите скачать мой тестовый проект, проверьте это.

Test project. Links to Google drive.

Спасибо за чтение.


Unity window обновленный. Пожалуйста, проверьте мою ошибку.

enter image description here


<iframe width="560" height="315" src="https://www.youtube.com/embed/gOzhNK6qjNQ" frameborder="0" allowfullscreen></iframe>

Я изменил тип анимации в наследство, но по-прежнему существует проблема ...

ответ

1

Убедитесь, что JumpShotA клип существует в массиве анимации в анимации компонент вашего GameObject. Эта ошибка показывает, что у вас нет ссылки для JumpShotA в массиве анимаций, пока вы пытаетесь ее воспроизвести.

+0

Я загрузил свою ситуацию. Пожалуйста, проверьте, что я совершил ошибку. Я думаю, что я добавил анимацию «JumpShotA» в массив анимаций правильно. –

+1

Является ли ваш тип анимации устаревшим? если не установить его в устаревших, а затем попробовать. – Nain

+0

Nain // Пожалуйста, проверьте мой фильм? Я изменил тип анимации на устаревшую, но проблема не исправлена ​​... –

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