Search Unity

Vuforia — how to only play one video when an image is recognized

Discussion in 'Scripting' started by Abid123, Apr 2, 2019.

  1. Abid123

    Abid123

    Joined:
    Mar 17, 2019
    Posts:
    5
    I have an AR application that has 2 image targets, I’m new at programming and any help would be appreciated. When I scanned the image target which contains the video all of my objects appear from the other image target and the video appears and plays. This occurred when I was Trying to get the video to play when the image target is detected and stop playing when the image not Detected. I was modifying the default Trackable event header as you can see down below. Thank you i added the follwoing lines
    public UnityEngine.Video.VideoPlayer VideoPlayer;

    VideoPlayer.Play();

    VideoPlayer.Stop();


    Code (CSharp):
    1.  
    2. using UnityEngine;
    3. using Vuforia;
    4.  
    5. /// <summary>
    6. /// A custom handler that implements the ITrackableEventHandler interface.
    7. ///
    8. /// Changes made to this file could be overwritten when upgrading the Vuforia version.
    9. /// When implementing custom event handler behavior, consider inheriting from this class instead.
    10. /// </summary>
    11. public class DefaultTrackableEventHandler : MonoBehaviour, ITrackableEventHandler
    12. {
    13.     public UnityEngine.Video.VideoPlayer VideoPlayer;
    14.     #region PROTECTED_MEMBER_VARIABLES
    15.  
    16.     protected TrackableBehaviour mTrackableBehaviour;
    17.     protected TrackableBehaviour.Status m_PreviousStatus;
    18.     protected TrackableBehaviour.Status m_NewStatus;
    19.  
    20.     #endregion // PROTECTED_MEMBER_VARIABLES
    21.  
    22.     #region UNITY_MONOBEHAVIOUR_METHODS
    23.  
    24.     protected virtual void Start()
    25.     {
    26.         mTrackableBehaviour = GetComponent<TrackableBehaviour>();
    27.         if (mTrackableBehaviour)
    28.             mTrackableBehaviour.RegisterTrackableEventHandler(this);
    29.     }
    30.  
    31.     protected virtual void OnDestroy()
    32.     {
    33.         if (mTrackableBehaviour)
    34.             mTrackableBehaviour.UnregisterTrackableEventHandler(this);
    35.     }
    36.  
    37.     #endregion // UNITY_MONOBEHAVIOUR_METHODS
    38.  
    39.     #region PUBLIC_METHODS
    40.  
    41.     /// <summary>
    42.     ///     Implementation of the ITrackableEventHandler function called when the
    43.     ///     tracking state changes.
    44.     /// </summary>
    45.     public void OnTrackableStateChanged(
    46.         TrackableBehaviour.Status previousStatus,
    47.         TrackableBehaviour.Status newStatus)
    48.     {
    49.         m_PreviousStatus = previousStatus;
    50.         m_NewStatus = newStatus;
    51.  
    52.         if (newStatus == TrackableBehaviour.Status.DETECTED ||
    53.             newStatus == TrackableBehaviour.Status.TRACKED ||
    54.             newStatus == TrackableBehaviour.Status.EXTENDED_TRACKED)
    55.         {
    56.             Debug.Log("Trackable " + mTrackableBehaviour.TrackableName + " found");
    57.             OnTrackingFound();
    58.         }
    59.         else if (previousStatus == TrackableBehaviour.Status.TRACKED &&
    60.                  newStatus == TrackableBehaviour.Status.NO_POSE)
    61.         {
    62.             Debug.Log("Trackable " + mTrackableBehaviour.TrackableName + " lost");
    63.             OnTrackingLost();
    64.         }
    65.         else
    66.         {
    67.             // For combo of previousStatus=UNKNOWN + newStatus=UNKNOWN|NOT_FOUND
    68.             // Vuforia is starting, but tracking has not been lost or found yet
    69.             // Call OnTrackingLost() to hide the augmentations
    70.             OnTrackingLost();
    71.         }
    72.     }
    73.  
    74.     #endregion // PUBLIC_METHODS
    75.  
    76.     #region PROTECTED_METHODS
    77.  
    78.     protected virtual void OnTrackingFound()
    79.     {
    80.         VideoPlayer.Play();
    81.         var rendererComponents = GetComponentsInChildren<Renderer>(true);
    82.         var colliderComponents = GetComponentsInChildren<Collider>(true);
    83.         var canvasComponents = GetComponentsInChildren<Canvas>(true);
    84.  
    85.         // Enable rendering:
    86.         foreach (var component in rendererComponents)
    87.             component.enabled = true;
    88.  
    89.         // Enable colliders:
    90.         foreach (var component in colliderComponents)
    91.             component.enabled = true;
    92.  
    93.         // Enable canvas':
    94.         foreach (var component in canvasComponents)
    95.             component.enabled = true;
    96.     }
    97.  
    98.  
    99.     protected virtual void OnTrackingLost()
    100.     {
    101.         VideoPlayer.Stop();
    102.         var rendererComponents = GetComponentsInChildren<Renderer>(true);
    103.         var colliderComponents = GetComponentsInChildren<Collider>(true);
    104.         var canvasComponents = GetComponentsInChildren<Canvas>(true);
    105.  
    106.         // Disable rendering:
    107.         foreach (var component in rendererComponents)
    108.             component.enabled = false;
    109.  
    110.         // Disable colliders:
    111.         foreach (var component in colliderComponents)
    112.             component.enabled = false;
    113.  
    114.         // Disable canvas':
    115.         foreach (var component in canvasComponents)
    116.             component.enabled = false;
    117.     }
    118.  
    119.     #endregion // PROTECTED_METHODS
    120. }
    121.