public AudioJob(AudioAction _action, AudioType _type, bool _fade, float _delay) { action = _action; type = _type; fade = _fade; delay = _delay; }
//Corountine to create Fade Out effect used in stop and pause //@params Sound sound to handle //@params fadeTime timeFade in seconds //@params audioAction action to omplement between stop and pause private IEnumerator FadeOut(Sound sound, float FadeTime, AudioAction audioAction) { sound.fadingOut = true; while (sound.audioSource.volume > 0.0f) { if (!sound.fadingOut) { break; } sound.audioSource.volume -= sound.volume * Time.deltaTime / FadeTime; yield return(null); } if (sound.fadingOut) { if (audioAction == AudioAction.Stop) { sound.audioSource.Stop(); } else if (audioAction == AudioAction.Pause) { sound.audioSource.Pause(); } sound.audioSource.volume = sound.volume; } sound.fadingOut = false; yield break; }
private void PlayRandomVoiceLine(AudioClip[] randomAudioClip, AudioAction audioAction) { int randomIndex = Random.Range(0, randomAudioClip.Length); if (!audioSource.isPlaying && !storyCompletionManager.IsEnd) { audioSource.PlayOneShot(randomAudioClip[randomIndex]); } switch (audioAction) { case AudioAction.Pause: StartCoroutine(PauseExhibitAudioThenWait()); break; case AudioAction.Unpause: StartCoroutine(WaitThenUnpauseExhibitAudio()); break; case AudioAction.Skip: StartCoroutine(WaitThenSkipExhibitAudio()); break; default: Debug.LogWarning("No audio action was executed!!"); break; } }
void InitZNCM() { AudioAction.ExecuteScript("RemoveAudio,JieShuo.wav"); AudioAction.ExecuteScript("PlayAudio,caimeiji.wav,0.3,0"); AudioAction.ExecuteScript("PlayAudio,posuiji.wav,0.3,0"); AudioAction.ExecuteScript("PlayAudio,biandianzhan.wav,0.3,0"); m_Time = 0; IniMineWall(); IniCutterBra(); float[] sketor = new float[54]; for (int i = 0; i < sketor.Length; i++) { sketor[i] = 0.5f; } ZhengScripts.InitilizeSketator(new Vector2(0, 53), sketor); ZhengScripts.InitilizeSketator(new Vector2(0, 17), new float[] { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.1f, 0.2f, 0.3f, 0.4f, 0.5f, 0.5f, 0.5f, 0.5f }); ZhuAnimation.PlayAnimation(new Vector2(0, 17), 0.1f, new float[] { 0, 0, 0, 0, 0, 0, 0, 0, 0.05f, 0.1f, 0.15f, 0.2f, 0.25f, 0.3f, 0.35f, 0.4f, 0.45f, 0.5f }, ZhuAnimation.ZhuAnimationMode.Mode3); curStep = typeofStep.None; CMJGo.transform.position = CMJGoPos;//BanChildList[2].transform.position curIndex = 2; KeyFrameAnimation.SSLLJ = true; //斜切入刀 CastTransfrom.singleton.InitilizeAnimation(); if (Cutter2DAnimation.singleton.playing) { CastTransfrom.singleton.CutKnife(); CastTransfrom.singleton.ToLeft(); } }
public AudioJob(AudioAction action, AudioType type, bool fade, float delay) { this.action = action; this.type = type; this.fade = fade; this.delay = delay; }
public AudioData(AudioType _type, AudioAction _action, bool _fade = false, float _delay = 0.0f) { type = _type; action = _action; fade = _fade; delay = _delay; }
void ExecuteAction(AudioAction action) { switch (action.Action) { case AudioAction.AudioActions.Play: Play(action); break; case AudioAction.AudioActions.Pause: Pause(action); break; case AudioAction.AudioActions.Resume: Resume(action); break; case AudioAction.AudioActions.Stop: Stop(action); break; case AudioAction.AudioActions.StopImmediate: StopImmediate(action); break; case AudioAction.AudioActions.StopAll: StopAll(); break; case AudioAction.AudioActions.StopAllImmediate: StopAllImmediate(); break; } }
public AudioJob(AudioAction action, AudioType type, bool fade, float fadeDuration, float delay) { _action = action; _type = type; _fade = fade; _fadeDuration = fadeDuration; _delay = delay; }
/// <summary> /// Custom action, won't do anything else except execute your custom action on a sound. /// </summary> /// <param name="name"></param> /// <param name="action"></param> /// <returns></returns> public Sound CustomAction(string name, AudioAction action) { bool success = _soundsDict.TryGetValue(name, out Sound value); if (!success) { return(null); } action(value); return(value); }
public void Pause() { if (MediaControls.Pause != null) { MediaControls.Pause.Invoke(); } else { audioPlayer.Pause(); } LastAudioAction = AudioAction.Pause; }
public void PlayPause() { if (playPauseIcon.GetComponent <Image>().sprite == defaultPauseSprite) { playPauseIcon.GetComponent <Image>().sprite = playSprite; audioAction = AudioAction.Pause; PlayRandomVoiceLine(currentPausingVoiceLines, audioAction); } else { playPauseIcon.GetComponent <Image>().sprite = defaultPauseSprite; audioAction = AudioAction.Unpause; PlayRandomVoiceLine(currentUspausingVoiceLines, audioAction); } }
public void Play() { BeforePlaying?.Invoke(this, new EventArgs()); if (MediaControls.Play != null) { MediaControls.Play.Invoke(); } else { audioPlayer.Play(); } LastAudioAction = AudioAction.Play; AfterPlaying?.Invoke(this, new EventArgs()); }
/// <summary> /// Calls the callback <param name="action"></param> before updating and playing the sound, so you can change the /// attributes of a sound if you want. /// </summary> /// <param name="name"></param> /// <param name="action"></param> /// <returns></returns> public Sound ChangeAndPlay(string name, AudioAction action) { bool success = _soundsDict.TryGetValue(name, out Sound value); if (!success) { return(null); } if (value.Source.isPlaying || value.Playing) { return(value); } action(value); value.UpdateSource(); value.Play(); return(value); }
public override void OnEnter() { // get the audio action component var go = Fsm.GetOwnerDefaultTarget(gameObject); if (go == null) { Finish(); return; } _audioAction = go.GetComponent <AudioAction>(); if (_audioAction == null) { Finish(); return; } _audioAction.Play(); Finish(); }
public override void Reset() { base.Reset(); gameObject = null; _audioAction = null; }
public AudioJob(AudioAction action, AudioType type) { this.action = action; this.type = type; }
public void FadeOutMusic3(float fadeOutTime_s, AudioAction f = null) { StartCoroutine(Fade(_music, "Music3", 0.0f, fadeOutTime_s, f)); }
private AudioAction GenerateAction(string[] cylinder) { AudioAction action = gameObject.AddComponent <AudioAction>() as AudioAction; // we always start from space; sfx is more used thus it can be omitted int i = 0; switch (cylinder[i]) { case "Music": action.targetSpace = musicGroupComponent; i++; break; case "SFX": action.targetSpace = soundFXGroupComponent; i++; break; default: foreach (Transform audioSpace in audioRoot) { if (cylinder[i] == audioSpace.gameObject.name) { AudioGroup targetSpace = audioSpace.gameObject.GetComponent <AudioGroup>(); if (targetSpace != null) { action.targetSpace = targetSpace; i++; break; } } } if (action.targetSpace == null) { // fallback to SFX action.targetSpace = soundFXGroupComponent; } break; } // then we pick the target action.targetName = cylinder[i]; // check if audio group is properly initialized if (action.targetSpace.elements == null) { Debug.LogWarning("AudioManager :: initialization is not complete; don't run sounds on Start or Awake, use built in DefaultTrack system"); action.type = AudioActionType.SelfDestruct; return(action); } // and check if the target exists if (action.targetSpace.GetElementByName(action.targetName) == null) { Debug.LogWarning("AudioManager :: couldn't find '" + cylinder[i] + "' in " + action.targetSpace.gameObject.name); action.type = AudioActionType.SelfDestruct; return(action); } // check if cylinder is empty i++; if (i >= cylinder.Length) { return(action); } // now we try to parse sub target if (action.targetSpace.GetElementByName(action.targetName).GetIDByKey(cylinder[i]) != -1) { action.subTargetName = cylinder[i]; // turn the cylinder and check if it's the end i++; if (i >= cylinder.Length) { return(action); } } // check for action, return the cylinder to previous position if we don't find it (Play will be used by default) switch (cylinder[i]) { case "Start": case "Play": action.type = AudioActionType.Play; break; case "Stop": action.type = AudioActionType.Stop; break; case "Reset": action.type = AudioActionType.Reset; break; case "SetTo": action.type = AudioActionType.SetTo; i++; action.intValue = Int32.Parse(cylinder[i]) - 1; break; default: i--; break; } // turn cylinder and check if it's empty for the last time i++; if (i >= cylinder.Length) { return(action); } // check for delay float delayInSeconds = 0f; bool isFloat = float.TryParse(cylinder[i], out delayInSeconds); if (isFloat) { action.delay = delayInSeconds; return(action); } // report a call problem if we haven't parsed the whole cylinder by now Debug.LogWarning("AudioManager :: don't know what '" + cylinder[i] + "' is"); return(action); }
public void FadeInMusic3(AudioAction f = null) { StartCoroutine(Fade(_music, "Music3", Music3, Music3FadeTime, f)); }
void StopImmediate(AudioAction action) { var items = GetItems(action.Settings.Id); for (int i = 0; i < items.Count; i++) items[i].StopImmediate(); }
void Stop(AudioAction action) { if (action.Settings == null) return; var items = GetItems(action.Settings.Id); for (int i = 0; i < items.Count; i++) items[i].Stop(); }
void Play(AudioAction action) { if (action.Settings == null) return; var items = GetItems(action.Settings.Id); AudioItem item = null; switch (action.Spatialization) { case AudioAction.SpatializationModes.None: item = AudioManager.Instance.CreateItem(action.Settings); break; case AudioAction.SpatializationModes.Static: item = AudioManager.Instance.CreateItem(action.Settings, Entity.Transform.position); break; case AudioAction.SpatializationModes.Dynamic: item = AudioManager.Instance.CreateItem(action.Settings, Entity.Transform); break; } activeItems.Add(item); items.Add(item); item.OnStop += i => { activeItems.Remove(i); items.Remove(i); }; item.Play(); }
private IEnumerator Fade(FMODObject audio, string paramName, float endVolume, float duration_s, AudioAction f = null) { float t = 0.0f; float originalVolume = audio.GetParameter(paramName); float time = Time.realtimeSinceStartup; while (t < 1.0f) { audio.SetParameter(paramName, Mathf.Lerp(originalVolume, endVolume, t)); float dt = Time.realtimeSinceStartup - time; t += dt / duration_s; time = Time.realtimeSinceStartup; yield return(null); } if (f != null) { f(); } }
void CMJMove() { m_Time += Time.deltaTime; if (isFirst && m_Time >= 3f) { leftArmAni.CrossFade("LeftArm_DH", 0f); rightArmAim.CrossFade("RightArm_DH", 0f); isFirst = false; m_Time = 0f; curStep = typeofStep.step1; Training.TrainingManager.ExecuteScript("SkipVRCamera,ZNCM_TZ"); MovieAction.ExecuteScript("PLayMovie,ZJ_JK,JX_ZJCZ.ogg,0"); MovieAction.ExecuteScript("PLayMovie,CMJ_JK,JX_CMJCZ.ogg,0"); MovieAction.ExecuteScript("PLayMovie,JKZX_JK,JX_JKCZ.ogg,0"); MovieAction.ExecuteScript("PLayMovie,ZJ_JK2,JX_ZJJK.ogg,0"); MovieAction.ExecuteScript("PLayMovie,CMJ_JK2,JX_CMJJK.ogg,0"); MovieAction.ExecuteScript("PLayMovie,JKZX_JK2,JX_JKJK.ogg,0"); AudioAction.ExecuteScript("SetAudioState,caimeiji.wav,3.2:0:-53.3,90,0.3,0"); AudioAction.ExecuteScript("SetAudioState,posuiji.wav,-46.77:0:-27.49,40,0.3,0"); AudioAction.ExecuteScript("SetAudioState,caimeiji.wav,56.5:-0.88:9.11,50,0.3,0"); if (Cutter2DAnimation.singleton != null) { Cutter2DAnimation.singleton.InitilizeAll(CMJGo.transform.Find("CMJ1/CMJ").gameObject); } } if (curStep == typeofStep.step1 && m_Time >= 4.2f) //第一次割煤 { //yield return new WaitForSeconds(4.2f); if (curIndex <= 18) { distance = (CMJGo.transform.position - BanChildList[curIndex].transform.position).magnitude; CMJGo.transform.forward = BanChildList[curIndex].transform.position - BanChildList[curIndex - 1].transform.position; //Vector3 Dir = BanChildList[curIndex].transform.position - BanChildList[curIndex - 1].transform.position; //CMJGo.transform.forward = Vector3.Lerp(CMJGo.transform.forward, Dir, Time.deltaTime); CMJGo.transform.Translate(CMJGo.transform.forward * CMJSpeed * Time.deltaTime, Space.World); if (distance <= 0.4f) { Cutter2D(curIndex); curIndex++; MyEventSystem.DispatchEvent("BeginMove", curIndex); } } else { CastTransfrom.singleton.LeftArmDown(); CastTransfrom.singleton.RightArmUp(); curStep = typeofStep.step2; m_Time = 0f; //割三角煤 ZhuAnimation.PlayAnimation(new Vector2(16, 0), 0.5f, new float[] { 0.5f }, ZhuAnimation.ZhuAnimationMode.Mode2); if (Cutter2DAnimation.singleton.playing) { CastTransfrom.singleton.MiddleVisible(false); CastTransfrom.singleton.HintVisible(false); Cutter2DAnimation.singleton.StopCutter1SecondStageAnimation(); Cutter2DAnimation.singleton.StopCutter2SecondStageAnimation(); } leftArmAni.CrossFade("LeftArm_DHR", 0f); rightArmAim.CrossFade("RightArm_DHR", 0f); if (Cutter2DAnimation.singleton.playing) { CastTransfrom.singleton.CutTri(); CastTransfrom.singleton.ToRight(); } } } else if (curStep == typeofStep.step2 && m_Time >= 4.2f) //第二次割煤--割三角煤 { //yield return new WaitForSeconds(4.2f); if (curIndex >= 3) { distance = (CMJGo.transform.position - BanChildList[curIndex - 1].transform.position).magnitude; CMJGo.transform.Translate(-CMJGo.transform.forward * CMJSpeed * Time.deltaTime, Space.World); if (curIndex == 15) { if (Cutter2DAnimation.singleton.playing) { Cutter2DAnimation.singleton.StartCutter2ThirdStageAnimation(); } } //Debug.Log(distance); if (distance <= 0.4f) { SetGroup1Particle(curIndex + 5); SetGroup2Particle(curIndex - 4); curIndex--; MyEventSystem.DispatchEvent("Step2", curIndex); } } else { CastTransfrom.singleton.LeftArmUp(); CastTransfrom.singleton.RightArmDown(); if (Cutter2DAnimation.singleton.playing) { CastTransfrom.singleton.MiddleVisible(false); CastTransfrom.singleton.HintVisible(false); Cutter2DAnimation.singleton.StopCutter2ThirdStageAnimation(); } //割底煤 leftArmAni.CrossFade("LeftArm_DH", 0f); rightArmAim.CrossFade("RightArm_DH", 0f); if (Cutter2DAnimation.singleton.playing) { CastTransfrom.singleton.ToLeft(); CastTransfrom.singleton.CutDown(); } curStep = typeofStep.step3; m_Time = 0f; } } else if (curStep == typeofStep.step3 && m_Time >= 4.2f)//第三次割煤--割底煤--中部跟机 { //yield return new WaitForSeconds(4.2f); if (curIndex < BanChildList.Count - 1) { distance = (CMJGo.transform.position - BanChildList[curIndex].transform.position).magnitude; CMJGo.transform.Translate(CMJGo.transform.forward * CMJSpeed * Time.deltaTime, Space.World); //Debug.Log(distance); if (distance <= 0.4f) { SetGroup1Particle(curIndex - 3); SetGroup2Particle(curIndex - 3 + 9); curIndex++; //中部跟机 if (curIndex == 19) { //SetDT_YJQDTextContent("中部跟机"); if (Cutter2DAnimation.singleton.playing) { CastTransfrom.singleton.FollowMiddle(); Cutter2DAnimation.singleton.StartCutter1ThirdStageAnimation(); } } if (curIndex == 20) { ZhuAnimation.PlayAnimation(new Vector2(curIndex - 20, curIndex - 11), 0.1f, new float[] { 1.0f, 0.95f, 0.9f, 0.85f, 0.8f, 0.75f, 0.7f, 0.65f, 0.6f, 0.55f }, ZhuAnimation.ZhuAnimationMode.Mode3); } if (curIndex > 20 && curIndex % 10 == 0) { ZhuAnimation.PlayAnimation(new Vector2(curIndex - 29, curIndex - 11), 0.1f, new float[] { 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 0.95f, 0.9f, 0.85f, 0.8f, 0.75f, 0.7f, 0.65f, 0.6f, 0.55f }, ZhuAnimation.ZhuAnimationMode.Mode3); //, 1.0f, 0.95f, 0.9f, 0.85f, 0.8f, 0.75f, 0.7f, 0.65f, 0.6f, 0.55f //ZhuAnimation.PlayAnimation(new Vector2(curIndex - 20, curIndex - 11), 0.1f, // new float[] { 1.0f, 0.95f, 0.9f, 0.85f, 0.8f, 0.75f, 0.7f, 0.65f, 0.6f, 0.55f }, ZhuAnimation.ZhuAnimationMode.Mode3); } MyEventSystem.DispatchEvent("Step3", curIndex); } } else { CastTransfrom.singleton.LeftArmDown(); leftArmAni.CrossFade("LeftArm_DHR", 0f); if (Cutter2DAnimation.singleton.playing) { CastTransfrom.singleton.MiddleVisible(false); CastTransfrom.singleton.HintVisible(false); Cutter2DAnimation.singleton.StopCutter1ThirdStageAnimation(); } if (Cutter2DAnimation.singleton.playing) { CastTransfrom.singleton.CutDown(); CastTransfrom.singleton.ToRight(); } curStep = typeofStep.step4; m_Time = 0f; } } else if (curStep == typeofStep.step4 && m_Time >= 4.2f) //第四次割煤--割底煤 { if (curIndex > 42) { distance = (CMJGo.transform.position - BanChildList[curIndex - 1].transform.position).magnitude; CMJGo.transform.Translate(-CMJGo.transform.forward * CMJSpeed * Time.deltaTime, Space.World); if (distance <= 0.4f) { SetGroup1Particle(curIndex + 5); SetGroup2Particle(curIndex - 4); curIndex--; MyEventSystem.DispatchEvent("Step4"); } } else { if (Cutter2DAnimation.singleton.playing) { CastTransfrom.singleton.MiddleVisible(false); CastTransfrom.singleton.HintVisible(false); } curStep = typeofStep.step5; m_Time = 0f; } } else if (curStep == typeofStep.step5 && m_Time >= 0.5f) //第五次割煤--回到待机位 { //yield return new WaitForSeconds(0.5f); if (curIndex < BanChildList.Count - 1) { distance = (CMJGo.transform.position - BanChildList[curIndex].transform.position).magnitude; CMJGo.transform.Translate(CMJGo.transform.forward * CMJSpeed * Time.deltaTime, Space.World); //Debug.Log(distance); if (distance <= 0.4f) { if (curIndex == 47) { ZhuAnimation.PlayAnimation(new Vector2(31, 45), 0.1f, new float[] { 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 0.95f, 0.9f, 0.85f, 0.8f, 0.75f, 0.7f, 0.65f, 0.6f, 0.55f }, ZhuAnimation.ZhuAnimationMode.Mode3); } SetGroup1Particle(curIndex - 3); SetGroup2Particle(curIndex - 3 + 9); curIndex++; MyEventSystem.DispatchEvent("Step5", curIndex); } } else { m_Time = 0f; MyEventSystem.DispatchEvent("ZNCMrestart"); } } }
public AudioJob(AudioAction _action, AudioType _type) { action = _action; type = _type; }
public AudioJob(AudioAction _action, AudioType _type, bool _fade) { action = _action; type = _type; fade = _fade; }
public void Skip() { playPauseIcon.GetComponent <Image>().sprite = defaultPauseSprite; audioAction = AudioAction.Skip; PlayRandomVoiceLine(currentSkippingVoiceLines, audioAction); }