Advertisement
Guest User

Untitled

a guest
Jun 27th, 2019
87
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.32 KB | None | 0 0
  1. using UnityEngine;
  2.  
  3. public class EspressioniScript : MonoBehaviour
  4. {
  5. public Animator animComp;
  6. private enum EspressioniFaccia {TalkB = 1, StopTalk = 0 }
  7. public AudioSource audioSource;
  8. public float updateStep = 0.1f;
  9. public int sampleDataLength = 1024;
  10. public float TimeChangeAnim = 2;
  11.  
  12. private float currentUpdateTime = 0f;
  13.  
  14. public float clipLoudness;
  15. private float[] clipSampleData;
  16.  
  17. private int RandomAnimWord;
  18. public int AnimWord;
  19.  
  20. public bool MyFunctionCalled;
  21.  
  22. [Header("Prossimo Audio Script")]
  23.  
  24. public AudioSource AudioS;
  25.  
  26. [Header("Write here the Size Of AudioC")]
  27. public int n;
  28. [SerializeField]
  29. public AudioClip[] AudioC;
  30.  
  31. public bool MyFunctionCalled2;
  32.  
  33. public int NumeroAudio = 1;
  34.  
  35. void Start()
  36. {
  37. clipSampleData = new float[sampleDataLength];
  38.  
  39. FirstAudio();
  40. }
  41.  
  42.  
  43.  
  44. // Update is called once per frame
  45. void Update()
  46. {
  47. currentUpdateTime += Time.deltaTime;
  48. if (currentUpdateTime >= updateStep && AudioS.isPlaying)
  49. {
  50. currentUpdateTime = 0f;
  51. float[] samples = new float[audioSource.clip.samples * audioSource.clip.channels];
  52. audioSource.clip.GetData(clipSampleData, audioSource.timeSamples);
  53. clipLoudness = 0f;
  54. foreach (var sample in clipSampleData)
  55. {
  56. clipLoudness += Mathf.Abs(sample);
  57. }
  58. clipLoudness /= sampleDataLength;
  59. }
  60. {
  61. if (clipLoudness > 0.025)
  62. {
  63. animComp.SetInteger("EspressioniFaccia", AnimWord);
  64. }
  65. if (clipLoudness < 0.025 && clipLoudness != 0)
  66. {
  67. animComp.SetInteger("EspressioniFaccia", 0);
  68. {
  69. if (MyFunctionCalled == false)
  70. {
  71. RandomAnim();
  72. MyFunctionCalled = true;
  73. }
  74. }
  75.  
  76. }
  77. if (clipLoudness == 0)
  78. {
  79. animComp.SetInteger("EspressioniFaccia", 0);
  80. StopRandomAnim();
  81. }
  82. }
  83. // Update Prossimo Audio
  84. if (NumeroAudio == n)
  85. {
  86. ResetAudio();
  87. }
  88.  
  89. if (!AudioS.isPlaying && NumeroAudio < n && MyFunctionCalled2 == false)
  90. {
  91. MyFunctionCalled2 = true;
  92. NextAudio();
  93. }
  94. }
  95.  
  96. void RandomAnim()
  97. {
  98. int RandomAnimWord = Random.Range(1, 4);
  99. AnimWord = RandomAnimWord;
  100. Invoke("RandomAnim", TimeChangeAnim);
  101.  
  102. }
  103. void StopRandomAnim()
  104. {
  105. MyFunctionCalled = false;
  106. CancelInvoke("RandomAnim");
  107. }
  108. //Script Audio
  109. void NextAudio()
  110. {
  111. MyFunctionCalled2 = false;
  112. NumeroAudio = (NumeroAudio + 1) % AudioC.Length;
  113. AudioS.clip = AudioC[NumeroAudio];
  114. AudioS.Play();
  115. }
  116. void FirstAudio()
  117. {
  118. MyFunctionCalled2 = false;
  119. NumeroAudio = 1 % AudioC.Length;
  120. AudioS.clip = AudioC[NumeroAudio];
  121. AudioS.Play();
  122. }
  123. void ResetAudio()
  124. {
  125. NumeroAudio = 1 % AudioC.Length;
  126. AudioS.clip = AudioC[NumeroAudio];
  127. AudioS.Play();
  128. }
  129.  
  130.  
  131. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement