Unity AR Vuforia - запуск анимации при срабатывании - PullRequest
0 голосов
/ 04 октября 2018

Hiho Community,

Я использую Vuforia для своего AR-Android-приложения, и у меня есть объект с анимацией, и я стараюсь, чтобы он воспроизводил анимацию, только если объект активирован.Нет ошибок, но это не работает.Вот мой код:

using UnityEngine;
using Vuforia;

    public class start_animation_if_trigger : MonoBehaviour, ITrackableEventHandler
    {
            private TrackableBehaviour mTrackableBehaviour;

        Animator m_Animator;

        void Start()
            {
            m_Animator = GetComponent<Animator>();
            mTrackableBehaviour = GetComponent<TrackableBehaviour>();
                if (mTrackableBehaviour)
                {
                    mTrackableBehaviour.RegisterTrackableEventHandler(this);
                }
            }

            public void OnTrackableStateChanged(
                                            TrackableBehaviour.Status previousStatus,
                                            TrackableBehaviour.Status newStatus)
            {
                if (newStatus == TrackableBehaviour.Status.DETECTED ||
                    newStatus == TrackableBehaviour.Status.TRACKED ||
                    newStatus == TrackableBehaviour.Status.EXTENDED_TRACKED)
                {
                // Play audio when target is found
                m_Animator.Play("C4D Animation Take");
                }
                else
                {
                // Stop audio when target is lost
                m_Animator.Play("none");
                }
            }
    }

и некоторые скриншоты проекта:

enter image description here

enter image description here

1 Ответ

0 голосов
/ 04 октября 2018

Попробуйте присоединить сценарий к imageTarget и затем получить компонент аниматора дочернего объекта (перетащите его из панели сцены или иерархии в переменную сценария в инспекторе).

public GameObject gameObjectToAnimate;
private Animator objectAnimator;

....

void Start () {
    objectAnimator = gameObjectToAnimate.GetComponent<Animator>();
    ...
    // 2s pause after instantiate the object
    Invoke("StartAnimation", 2);
}

void StartAnimation() {
    if (objectAnimator != null)
    {
        objectAnimator.PlayInFixedTime("C4D Animation Take");
    }
}

Отказ от ответственности: код не проверен.

...