SurfaceEffect.cs 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. using UnityEngine;
  2. namespace HQFPSWeapons
  3. {
  4. public class SurfaceEffect : MonoBehaviour
  5. {
  6. [SerializeField]
  7. private SoundPlayer m_Audio = null;
  8. //private ParticleSystem[] m_Particles;
  9. //private AudioSource m_AudioSource;
  10. //public void Play(float audioVolume)
  11. //{
  12. // m_Audio.Play(ItemSelection.Method.RandomExcludeLast, m_AudioSource, audioVolume);
  13. // for(int i = 0;i < m_Particles.Length;i++)
  14. // m_Particles[i].Play();
  15. //}
  16. //private void Awake()
  17. //{
  18. // m_Particles = GetComponentsInChildren<ParticleSystem>();
  19. // m_AudioSource = GetComponent<AudioSource>();
  20. //}
  21. [SerializeField]
  22. [HideInInspector]
  23. private ParticleSystem[] m_Particles;
  24. [SerializeField]
  25. [HideInInspector]
  26. private AudioSource m_AudioSource;
  27. [HideInInspector]
  28. [SerializeField]
  29. private bool m_Initialized;
  30. public void Init(SoundPlayer audioEffect, GameObject visualEffect, bool spatializeAudio)
  31. {
  32. if(m_Initialized)
  33. return;
  34. m_Audio = audioEffect;
  35. m_AudioSource = gameObject.AddComponent<AudioSource>();
  36. m_AudioSource.spatialBlend = 1f;
  37. if(spatializeAudio)
  38. m_AudioSource.spatialize = true;
  39. if(visualEffect != null)
  40. {
  41. Instantiate(visualEffect, transform.position, transform.rotation, transform);
  42. m_Particles = GetComponentsInChildren<ParticleSystem>();
  43. }
  44. m_Initialized = true;
  45. }
  46. public void Play(float audioVolume)
  47. {
  48. if(!m_Initialized)
  49. {
  50. Debug.LogError("Trying to play a surface effect, but it's not initialized!");
  51. return;
  52. }
  53. if(m_Audio != null)
  54. m_Audio.Play(m_AudioSource, audioVolume);
  55. for(int i = 0;i < m_Particles.Length;i++)
  56. m_Particles[i].Play();
  57. }
  58. }
  59. }