Last active
October 20, 2018 06:44
-
-
Save Ruqyai/1b11997c50e24b9a5b85702cc6057b4a to your computer and use it in GitHub Desktop.
How reset the default setting to play and stop a sound when detect a target image
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/*============================================================================== | |
Copyright (c) 2017 PTC Inc. All Rights Reserved. | |
Copyright (c) 2010-2014 Qualcomm Connected Experiences, Inc. | |
All Rights Reserved. | |
Confidential and Proprietary - Protected under copyright and other laws. | |
==============================================================================*/ | |
using UnityEngine; | |
using Vuforia; | |
using System.Collections; | |
using System.Collections.Generic; | |
/// <summary> | |
/// A custom handler that implements the ITrackableEventHandler interface. | |
/// </summary> | |
public class DefaultTrackableEventHandler : MonoBehaviour, ITrackableEventHandler | |
{ | |
//------------Begin Sound---------- | |
public AudioSource soundTarget; | |
public AudioClip clipTarget; | |
private AudioSource[] allAudioSources; | |
//function to stop all sounds | |
void StopAllAudio() | |
{ | |
allAudioSources = FindObjectsOfType(typeof(AudioSource)) as AudioSource[]; | |
foreach (AudioSource audioS in allAudioSources) | |
{ | |
audioS.Stop(); | |
} | |
} | |
//function to play sound | |
void playSound(string ss) | |
{ | |
clipTarget = (AudioClip)Resources.Load(ss); | |
soundTarget.clip = clipTarget; | |
soundTarget.loop = false; | |
soundTarget.playOnAwake = false; | |
soundTarget.Play(); | |
} | |
//-----------End Sound------------ | |
#region PRIVATE_MEMBER_VARIABLES | |
protected TrackableBehaviour mTrackableBehaviour; | |
#endregion // PRIVATE_MEMBER_VARIABLES | |
#region UNTIY_MONOBEHAVIOUR_METHODS | |
protected virtual void Start() | |
{ | |
mTrackableBehaviour = GetComponent<TrackableBehaviour>(); | |
if (mTrackableBehaviour) | |
mTrackableBehaviour.RegisterTrackableEventHandler(this); | |
//Register / add the AudioSource as object | |
soundTarget = (AudioSource)gameObject.AddComponent<AudioSource>(); | |
} | |
#endregion // UNTIY_MONOBEHAVIOUR_METHODS | |
#region PUBLIC_METHODS | |
/// <summary> | |
/// Implementation of the ITrackableEventHandler function called when the | |
/// tracking state changes. | |
/// </summary> | |
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.NOT_FOUND) | |
{ | |
Debug.Log("Trackable " + mTrackableBehaviour.TrackableName + " lost"); | |
OnTrackingLost(); | |
} | |
else | |
{ | |
// For combo of previousStatus=UNKNOWN + newStatus=UNKNOWN|NOT_FOUND | |
// Vuforia is starting, but tracking has not been lost or found yet | |
// Call OnTrackingLost() to hide the augmentations | |
OnTrackingLost(); | |
} | |
} | |
#endregion // PUBLIC_METHODS | |
#region PRIVATE_METHODS | |
protected virtual void OnTrackingFound() | |
{ | |
var rendererComponents = GetComponentsInChildren<Renderer>(true); | |
var colliderComponents = GetComponentsInChildren<Collider>(true); | |
var canvasComponents = GetComponentsInChildren<Canvas>(true); | |
// Enable rendering: | |
foreach (var component in rendererComponents) | |
component.enabled = true; | |
// Enable colliders: | |
foreach (var component in colliderComponents) | |
component.enabled = true; | |
// Enable canvas': | |
foreach (var component in canvasComponents) | |
component.enabled = true; | |
//Play Sound, IF detect an target | |
if (mTrackableBehaviour.TrackableName == "moon") | |
{ | |
playSound("sounds/moon-sound"); | |
} | |
if (mTrackableBehaviour.TrackableName == "mars") | |
{ | |
playSound("sounds/mars-sound"); | |
} | |
} | |
protected virtual void OnTrackingLost() | |
{ | |
var rendererComponents = GetComponentsInChildren<Renderer>(true); | |
var colliderComponents = GetComponentsInChildren<Collider>(true); | |
var canvasComponents = GetComponentsInChildren<Canvas>(true); | |
// Disable rendering: | |
foreach (var component in rendererComponents) | |
component.enabled = false; | |
// Disable colliders: | |
foreach (var component in colliderComponents) | |
component.enabled = false; | |
// Disable canvas': | |
foreach (var component in canvasComponents) | |
component.enabled = false; | |
//Stop All Sounds if Target Lost | |
StopAllAudio(); | |
} | |
#endregion // PRIVATE_METHODS | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment