- Home /
Code is too long and not reduced to the relevant part
when image target detected the video is play , but when target lost the sound is still play. pls help.
hi , im ccurrenly using unity to built my project . but stuck at the videoplayer and audio when my image target detected my video player is played ( still what i want ) but when target lost the sound is sstill playing until I deetected my image target again . im trying to using videoplayer.pause but when i do that , my image target that detected picture is lost.
here is my code
// DefaultTrackableEventHandler
using UnityEngine;
using UnityEngine.UI;
using Vuforia;
using UnityEngine.Video;
public class DefaultTrackableEventHandler : MonoBehaviour, ITrackableEventHandler
{
public AudioSource soundTarget;
public AudioClip clipTarget;
private AudioSource[] allAudioSources;
public Transform TextTargetName;
public Transform TextDescription;
public Transform PanelDescription;
public UnityEngine.UI.Image uploadimage;
public string filepath =" Assets / Resources / resources / image ";
public VideoClip videoClip;
public Renderer x;
protected TrackableBehaviour mTrackableBehaviour;
private void StopAllAudio()
{
allAudioSources = (Object.FindObjectsOfType(typeof(AudioSource)) as AudioSource[]);
AudioSource[] array = allAudioSources;
foreach (AudioSource audioSource in array)
{
audioSource.Stop();
}
}
private void playSound(string ss)
{
clipTarget = (AudioClip)Resources.Load(ss);
soundTarget.clip = clipTarget;
soundTarget.loop = false;
soundTarget.playOnAwake = false;
soundTarget.Play();
}
protected virtual void Start()
{
mTrackableBehaviour = GetComponent<TrackableBehaviour>();
if ((bool)mTrackableBehaviour)
{
mTrackableBehaviour.RegisterTrackableEventHandler(this);
}
soundTarget = base.gameObject.AddComponent<AudioSource>();
var videoPlayer = gameObject.AddComponent<VideoPlayer>();
var audioSource = gameObject.AddComponent<AudioSource>();
videoPlayer.playOnAwake = false;
videoPlayer.clip = videoClip;
videoPlayer.renderMode = VideoRenderMode.MaterialOverride;
videoPlayer.targetMaterialRenderer = x;
videoPlayer.targetMaterialProperty = "_MainTex";
videoPlayer.audioOutputMode = VideoAudioOutputMode.AudioSource;
videoPlayer.SetTargetAudioSource(0, audioSource);
}
protected virtual void OnDestroy()
{
if ((bool)mTrackableBehaviour)
{
mTrackableBehaviour.UnregisterTrackableEventHandler(this);
}
}
public void OnTrackableStateChanged(TrackableBehaviour.Status previousStatus, TrackableBehaviour.Status newStatus)
{
if (newStatus == TrackableBehaviour.Status.DETECTED || newStatus == TrackableBehaviour.Status.TRACKED || newStatus == TrackableBehaviour.Status.EXTENDED_TRACKED)
{
Debug.Log("Trackable " + mTrackableBehaviour.TrackableName + " found");
OnTrackingFound();
}
else if (previousStatus == TrackableBehaviour.Status.TRACKED && newStatus == TrackableBehaviour.Status.NO_POSE)
{
Debug.Log("Trackable " + mTrackableBehaviour.TrackableName + " lost");
OnTrackingLost();
}
else
{
OnTrackingLost();
}
TextTargetName.gameObject.SetActive(value: false);
uploadimage.gameObject.SetActive(value: false);
TextDescription.gameObject.SetActive(value: false);
PanelDescription.gameObject.SetActive(value: false);
}
protected virtual void OnTrackingFound()
{
Renderer[] componentsInChildren = GetComponentsInChildren<Renderer>(includeInactive: true);
Collider[] componentsInChildren2 = GetComponentsInChildren<Collider>(includeInactive: true);
Canvas[] componentsInChildren3 = GetComponentsInChildren<Canvas>(includeInactive: true);
Renderer[] array = componentsInChildren;
foreach (Renderer renderer in array)
{
renderer.enabled = true;
}
Collider[] array2 = componentsInChildren2;
foreach (Collider collider in array2)
{
collider.enabled = true;
}
Canvas[] array3 = componentsInChildren3;
foreach (Canvas canvas in array3)
{
canvas.enabled = true;
}
if (mTrackableBehaviour.TrackableName == "itsimc")
{
VideoPlayer vp = GetComponent<VideoPlayer>();
if (vp.isPlaying)
{
vp.Stop();
}
else
{
vp.Play();
}
}
if (mTrackableBehaviour.TrackableName == "STNK")
{
playSound("sound/stnksound");
uploadimage.sprite = Resources.Load<Sprite>(filepath + "stnkimg");
}
if (mTrackableBehaviour.TrackableName == "HELM")
{
playSound("sound/helmsound");
uploadimage.sprite = Resources.Load<Sprite>(filepath + "helmimg");
}
if (mTrackableBehaviour.TrackableName == "SIMCARD")
{
playSound("sound/simsound");
uploadimage.sprite = Resources.Load<Sprite>(filepath + "simcardimg");
}
if (mTrackableBehaviour.TrackableName == "JACKET")
{
playSound("sound/jacketsound");
uploadimage.sprite = Resources.Load<Sprite>(filepath + "jacketimg");
}
if (mTrackableBehaviour.TrackableName == "SARUNGTANGAN")
{
playSound("sound/glovessound");
uploadimage.sprite = Resources.Load<Sprite>(filepath + "gloveimg");
}
if (mTrackableBehaviour.TrackableName == "SEPATU")
{
playSound("sound/shoesosund");
uploadimage.sprite = Resources.Load<Sprite>(filepath + "shoesimg");
}
if (mTrackableBehaviour.TrackableName == "PAD")
{
playSound("sound/padsound");
uploadimage.sprite = Resources.Load<Sprite>(filepath + "padimg");
}
if (mTrackableBehaviour.TrackableName == "MASKER")
{
playSound("sound/maskersound");
uploadimage.sprite = Resources.Load<Sprite>(filepath + "maskerimg");
}
if (mTrackableBehaviour.TrackableName == "RAINCOAT")
{
playSound("sound/coatsound");
uploadimage.sprite = Resources.Load<Sprite>(filepath + "raincoat");
}
if (mTrackableBehaviour.TrackableName == "HANDPHONE")
{
playSound("sound/hapesound");
uploadimage.sprite = Resources.Load<Sprite>(filepath + "handphoneimg");
}
if (mTrackableBehaviour.TrackableName == "RODA")
{
playSound("sound/wheelsound");
uploadimage.sprite = Resources.Load<Sprite>(filepath + "wheelimg");
}
if (mTrackableBehaviour.TrackableName == "BENSIN")
{
playSound("sound/fuelsound");
uploadimage.sprite = Resources.Load<Sprite>(filepath + "fuelimg");
}
if (mTrackableBehaviour.TrackableName == "SPION")
{
playSound("sound/spionsound");
uploadimage.sprite = Resources.Load<Sprite>(filepath + "spionimg");
}
}
protected virtual void OnTrackingLost()
{
Renderer[] componentsInChildren = GetComponentsInChildren<Renderer>(includeInactive: true);
Collider[] componentsInChildren2 = GetComponentsInChildren<Collider>(includeInactive: true);
Canvas[] componentsInChildren3 = GetComponentsInChildren<Canvas>(includeInactive: true);
Renderer[] array = componentsInChildren;
foreach (Renderer renderer in array)
{
renderer.enabled = false;
}
Collider[] array2 = componentsInChildren2;
foreach (Collider collider in array2)
{
collider.enabled = false;
}
Canvas[] array3 = componentsInChildren3;
foreach (Canvas canvas in array3)
{
canvas.enabled = false;
}
StopAllAudio();
}
}
pls help . thanks in advanced.
Follow this Question
Related Questions
Have both canvas' buttons and Vuforia video canvas' button working in the same scene? 0 Answers
Video Plane on Image Target - Replay Button (Beginner level) 0 Answers
my AR camera keep blinking or flickering when target image detected , please help 1 Answer
How do I play a full screen video? 4 Answers