Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using UnityEngine;
- public class EspressioniScript : MonoBehaviour
- {
- public Animator animComp;
- private enum EspressioniFaccia {TalkB = 1, StopTalk = 0 }
- public AudioSource audioSource;
- public float updateStep = 0.1f;
- public int sampleDataLength = 1024;
- public float TimeChangeAnim = 2;
- private float currentUpdateTime = 0f;
- public float clipLoudness;
- private float[] clipSampleData;
- private int RandomAnimWord;
- public int AnimWord;
- public bool MyFunctionCalled;
- [Header("Prossimo Audio Script")]
- public AudioSource AudioS;
- [Header("Write here the Size Of AudioC")]
- public int n;
- [SerializeField]
- public AudioClip[] AudioC;
- public bool MyFunctionCalled2;
- public int NumeroAudio = 1;
- void Start()
- {
- clipSampleData = new float[sampleDataLength];
- FirstAudio();
- }
- // Update is called once per frame
- void Update()
- {
- currentUpdateTime += Time.deltaTime;
- if (currentUpdateTime >= updateStep && AudioS.isPlaying)
- {
- currentUpdateTime = 0f;
- float[] samples = new float[audioSource.clip.samples * audioSource.clip.channels];
- audioSource.clip.GetData(clipSampleData, audioSource.timeSamples);
- clipLoudness = 0f;
- foreach (var sample in clipSampleData)
- {
- clipLoudness += Mathf.Abs(sample);
- }
- clipLoudness /= sampleDataLength;
- }
- {
- if (clipLoudness > 0.025)
- {
- animComp.SetInteger("EspressioniFaccia", AnimWord);
- }
- if (clipLoudness < 0.025 && clipLoudness != 0)
- {
- animComp.SetInteger("EspressioniFaccia", 0);
- {
- if (MyFunctionCalled == false)
- {
- RandomAnim();
- MyFunctionCalled = true;
- }
- }
- }
- if (clipLoudness == 0)
- {
- animComp.SetInteger("EspressioniFaccia", 0);
- StopRandomAnim();
- }
- }
- // Update Prossimo Audio
- if (NumeroAudio == n)
- {
- ResetAudio();
- }
- if (!AudioS.isPlaying && NumeroAudio < n && MyFunctionCalled2 == false)
- {
- MyFunctionCalled2 = true;
- NextAudio();
- }
- }
- void RandomAnim()
- {
- int RandomAnimWord = Random.Range(1, 4);
- AnimWord = RandomAnimWord;
- Invoke("RandomAnim", TimeChangeAnim);
- }
- void StopRandomAnim()
- {
- MyFunctionCalled = false;
- CancelInvoke("RandomAnim");
- }
- //Script Audio
- void NextAudio()
- {
- MyFunctionCalled2 = false;
- NumeroAudio = (NumeroAudio + 1) % AudioC.Length;
- AudioS.clip = AudioC[NumeroAudio];
- AudioS.Play();
- }
- void FirstAudio()
- {
- MyFunctionCalled2 = false;
- NumeroAudio = 1 % AudioC.Length;
- AudioS.clip = AudioC[NumeroAudio];
- AudioS.Play();
- }
- void ResetAudio()
- {
- NumeroAudio = 1 % AudioC.Length;
- AudioS.clip = AudioC[NumeroAudio];
- AudioS.Play();
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement