123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577 |
- using UnityEngine;
- using System.Collections;
- public class F3DAudioController : MonoBehaviour
- {
- // Singleton instance
- public static F3DAudioController instance;
- // Audio timers
- float timer_01, timer_02;
-
- [Header("Vulcan")]
- public AudioClip[] vulcanHit; // Impact prefabs array
- public AudioClip vulcanShot; // Shot prefab
- public float vulcanDelay; // Shot delay in ms
- public float vulcanHitDelay; // Hit delay in ms
- [Header("Solo gun")]
- public AudioClip[] soloGunHit;
- public AudioClip soloGunShot;
- public float soloGunDelay;
- public float soloGunHitDelay;
- [Header("Sniper")]
- public AudioClip[] sniperHit;
- public AudioClip sniperShot;
- public float sniperDelay;
- public float sniperHitDelay;
- [Header("Shot gun")]
- public AudioClip[] shotGunHit;
- public AudioClip shotGunShot;
- public float shotGunDelay;
- public float shotGunHitDelay;
- [Header("Seeker")]
- public AudioClip[] seekerHit;
- public AudioClip seekerShot;
- public float seekerDelay;
- public float seekerHitDelay;
- [Header("Rail gun")]
- public AudioClip[] railgunHit;
- public AudioClip railgunShot;
- public float railgunDelay;
- public float railgunHitDelay;
- [Header("Plasma gun")]
- public AudioClip[] plasmagunHit;
- public AudioClip plasmagunShot;
- public float plasmagunDelay;
- public float plasmagunHitDelay;
- [Header("Plasma beam")]
- public AudioClip plasmabeamOpen; // Open audio clip prefab
- public AudioClip plasmabeamLoop; // Loop audio clip prefab
- public AudioClip plasmabeamClose; // Close audio clip prefab
- [Header("Plasma beam heavy")]
- public AudioClip plasmabeamHeavyOpen;
- public AudioClip plasmabeamHeavyLoop;
- public AudioClip plasmabeamHeavyClose;
- [Header("Lightning gun")]
- public AudioClip lightningGunOpen;
- public AudioClip lightningGunLoop;
- public AudioClip lightningGunClose;
- [Header("Flame gun")]
- public AudioClip flameGunOpen;
- public AudioClip flameGunLoop;
- public AudioClip flameGunClose;
- [Header("Laser impulse")]
- public AudioClip[] laserImpulseHit;
- public AudioClip laserImpulseShot;
- public float laserImpulseDelay;
- public float laserImpulseHitDelay;
- void Awake ()
- {
- // Initialize singleton
- instance = this;
- }
- void Update()
- {
- // Update timers
- timer_01 += Time.deltaTime;
- timer_02 += Time.deltaTime;
- }
-
- // Play vulcan shot audio at specific position
- public void VulcanShot(Vector3 pos)
- {
- // Audio source can only be played once for each vulcanDelay
- if (timer_01 >= vulcanDelay)
- {
- // Spawn audio source prefab from pool
- AudioSource aSrc = F3DPool.instance.SpawnAudio(vulcanShot, pos, null);
- if (aSrc != null)
- {
- // Modify audio source settings specific to it's type
- aSrc.pitch = Random.Range(0.95f, 1f);
- aSrc.volume = Random.Range(0.8f, 1f);
- aSrc.minDistance = 5f;
- aSrc.loop = false;
- aSrc.Play();
- // Reset delay timer
- timer_01 = 0f;
- }
- }
- }
- // Play vulcan hit audio at specific position
- public void VulcanHit(Vector3 pos)
- {
- if (timer_02 >= vulcanHitDelay)
- {
- // Spawn random hit audio prefab from pool for specific weapon type
- AudioSource aSrc = F3DPool.instance.SpawnAudio(vulcanHit[Random.Range(0, vulcanHit.Length)], pos, null);
- if (aSrc != null)
- {
- aSrc.pitch = Random.Range(0.95f, 1f);
- aSrc.volume = Random.Range(0.6f, 1f);
- aSrc.minDistance = 7f;
- aSrc.loop = false;
- aSrc.Play();
- timer_02 = 0f;
- }
- }
- }
- // Play solo gun shot audio at specific position
- public void SoloGunShot(Vector3 pos)
- {
- if (timer_01 >= soloGunDelay)
- {
- AudioSource aSrc = F3DPool.instance.SpawnAudio(soloGunShot, pos, null);
- if (aSrc != null)
- {
- aSrc.pitch = Random.Range(0.95f, 1f);
- aSrc.volume = Random.Range(0.8f, 1f);
- aSrc.minDistance = 30f;
- aSrc.loop = false;
- aSrc.Play();
- timer_01 = 0f;
- }
- }
- }
- // Play solo gun hit audio at specific position
- public void SoloGunHit(Vector3 pos)
- {
- if (timer_02 >= soloGunHitDelay)
- {
- AudioSource aSrc = F3DPool.instance.SpawnAudio(soloGunHit[Random.Range(0, soloGunHit.Length)], pos, null);
- if (aSrc != null)
- {
- aSrc.pitch = Random.Range(0.95f, 1f);
- aSrc.volume = Random.Range(0.8f, 1f);
- aSrc.minDistance = 50f;
- aSrc.loop = false;
- aSrc.Play();
- timer_02 = 0f;
- }
- }
- }
- // Play sniper shot audio at specific position
- public void SniperShot(Vector3 pos)
- {
- if (timer_01 >= sniperDelay)
- {
- AudioSource aSrc = F3DPool.instance.SpawnAudio(sniperShot, pos, null);
- if (aSrc != null)
- {
- aSrc.pitch = Random.Range(0.9f, 1f);
- aSrc.volume = Random.Range(0.8f, 1f);
- aSrc.minDistance = 6f;
- aSrc.loop = false;
- aSrc.Play();
- timer_01 = 0f;
- }
- }
- }
- // Play sniper hit audio at specific position
- public void SniperHit(Vector3 pos)
- {
- if (timer_02 >= sniperHitDelay)
- {
- AudioSource aSrc = F3DPool.instance.SpawnAudio(sniperHit[Random.Range(0, sniperHit.Length)], pos, null);
- if (aSrc != null)
- {
- aSrc.pitch = Random.Range(0.9f, 1f);
- aSrc.volume = Random.Range(0.8f, 1f);
- aSrc.minDistance = 8f;
- aSrc.loop = false;
- aSrc.Play();
- timer_02 = 0f;
- }
- }
- }
- // Play shotgun shot audio at specific position
- public void ShotGunShot(Vector3 pos)
- {
- if (timer_01 >= shotGunDelay)
- {
- AudioSource aSrc = F3DPool.instance.SpawnAudio(shotGunShot, pos, null);
- if (aSrc != null)
- {
- aSrc.pitch = Random.Range(0.9f, 1f);
- aSrc.volume = Random.Range(0.8f, 1f);
- aSrc.minDistance = 8f;
- aSrc.loop = false;
- aSrc.Play();
- timer_01 = 0f;
- }
- }
- }
- // Play shotgun hit audio at specific position
- public void ShotGunHit(Vector3 pos)
- {
- if (timer_02 >= shotGunHitDelay)
- {
- AudioSource aSrc = F3DPool.instance.SpawnAudio(shotGunHit[Random.Range(0, shotGunHit.Length)], pos, null);
- if (aSrc != null)
- {
- aSrc.pitch = Random.Range(0.9f, 1f);
- aSrc.volume = Random.Range(0.8f, 1f);
- aSrc.minDistance = 7f;
- aSrc.loop = false;
- aSrc.Play();
- timer_02 = 0f;
- }
- }
- }
- // Play seeker shot audio at specific position
- public void SeekerShot(Vector3 pos)
- {
- if (timer_01 >= seekerDelay)
- {
- AudioSource aSrc = F3DPool.instance.SpawnAudio(seekerShot, pos, null);
- if (aSrc != null)
- {
- aSrc.pitch = Random.Range(0.8f, 1f);
- aSrc.volume = Random.Range(0.8f, 1f);
- aSrc.minDistance = 8f;
- aSrc.loop = false;
- aSrc.Play();
- timer_01 = 0f;
- }
- }
- }
- // Play seeker hit audio at specific position
- public void SeekerHit(Vector3 pos)
- {
- if (timer_02 >= seekerHitDelay)
- {
- AudioSource aSrc = F3DPool.instance.SpawnAudio(seekerHit[Random.Range(0, seekerHit.Length)], pos, null);
- if (aSrc != null)
- {
- aSrc.pitch = Random.Range(0.8f, 1f);
- aSrc.volume = Random.Range(0.8f, 1f);
- aSrc.minDistance = 25f;
- aSrc.loop = false;
- aSrc.Play();
- timer_02 = 0f;
- }
- }
- }
- // Play railgun shot audio at specific position
- public void RailGunShot(Vector3 pos)
- {
- if (timer_01 >= railgunDelay)
- {
- AudioSource aSrc = F3DPool.instance.SpawnAudio(railgunShot, pos, null);
- if (aSrc != null)
- {
- aSrc.pitch = Random.Range(0.8f, 1f);
- aSrc.volume = Random.Range(0.8f, 1f);
- aSrc.minDistance = 4f;
- aSrc.loop = false;
- aSrc.Play();
- timer_01 = 0f;
- }
- }
- }
- // Play railgun hit audio at specific position
- public void RailGunHit(Vector3 pos)
- {
- if (timer_02 >= railgunHitDelay)
- {
- AudioSource aSrc = F3DPool.instance.SpawnAudio(railgunHit[Random.Range(0, railgunHit.Length)], pos, null);
- if (aSrc != null)
- {
- aSrc.pitch = Random.Range(0.8f, 1f);
- aSrc.volume = Random.Range(0.8f, 1f);
- aSrc.minDistance = 20f;
- aSrc.loop = false;
- aSrc.Play();
- timer_02 = 0f;
- }
- }
- }
- // Play plasma gun shot audio at specific position
- public void PlasmaGunShot(Vector3 pos)
- {
- if (timer_01 >= plasmagunDelay)
- {
- AudioSource aSrc = F3DPool.instance.SpawnAudio(plasmagunShot, pos, null);
- if (aSrc != null)
- {
- aSrc.pitch = Random.Range(0.8f, 1f);
- aSrc.volume = Random.Range(0.8f, 1f);
- aSrc.minDistance = 4f;
- aSrc.loop = false;
- aSrc.Play();
- timer_01 = 0f;
- }
- }
- }
- // Play plasma gun hit audio at specific position
- public void PlasmaGunHit(Vector3 pos)
- {
- if (timer_02 >= plasmagunHitDelay)
- {
- AudioSource aSrc = F3DPool.instance.SpawnAudio(plasmagunHit[Random.Range(0, plasmagunHit.Length)], pos, null);
- if (aSrc != null)
- {
- aSrc.pitch = Random.Range(0.8f, 1f);
- aSrc.volume = Random.Range(0.8f, 1f);
- aSrc.minDistance = 50f;
- aSrc.loop = false;
- aSrc.Play();
- timer_02 = 0f;
- }
- }
- }
- // Play plasma beam shot and loop audio at specific position
- public void PlasmaBeamLoop(Vector3 pos, Transform loopParent)
- {
- AudioSource aOpen = F3DPool.instance.SpawnAudio(plasmabeamOpen, pos, null);
- AudioSource aLoop = F3DPool.instance.SpawnAudio(plasmabeamLoop, pos, loopParent);
- if (aOpen != null && aLoop != null)
- {
- aOpen.pitch = Random.Range(0.8f, 1f);
- aOpen.volume = Random.Range(0.8f, 1f);
- aOpen.minDistance = 50f;
- aOpen.loop = false;
- aOpen.Play();
- aLoop.pitch = Random.Range(0.95f, 1f);
- aLoop.volume = Random.Range(0.95f, 1f);
- aLoop.loop = true;
- aLoop.minDistance = 50f;
- aLoop.Play();
- }
- }
- // Play plasma beam closing audio at specific position
- public void PlasmaBeamClose(Vector3 pos)
- {
- AudioSource aClose = F3DPool.instance.SpawnAudio(plasmabeamClose, pos, null);
- if (aClose != null)
- {
- aClose.pitch = Random.Range(0.8f, 1f);
- aClose.volume = Random.Range(0.8f, 1f);
- aClose.minDistance = 50f;
- aClose.loop = false;
- aClose.Play();
- }
- }
- // Play heavy plasma beam shot and loop audio at specific position
- public void PlasmaBeamHeavyLoop(Vector3 pos, Transform loopParent)
- {
- AudioSource aOpen = F3DPool.instance.SpawnAudio(plasmabeamHeavyOpen, pos, null);
- AudioSource aLoop = F3DPool.instance.SpawnAudio(plasmabeamHeavyLoop, pos, loopParent);
- if (aOpen != null && aLoop != null)
- {
- aOpen.pitch = Random.Range(0.8f, 1f);
- aOpen.volume = Random.Range(0.8f, 1f);
- aOpen.minDistance = 50f;
- aOpen.loop = false;
- aOpen.Play();
- aLoop.pitch = Random.Range(0.95f, 1f);
- aLoop.volume = Random.Range(0.95f, 1f);
- aLoop.loop = true;
- aLoop.minDistance = 50f;
- aLoop.Play();
- }
- }
- // Play heavy plasma beam closing audio at specific position
- public void PlasmaBeamHeavyClose(Vector3 pos)
- {
- AudioSource aClose = F3DPool.instance.SpawnAudio(plasmabeamHeavyClose, pos, null);
- if (aClose != null)
- {
- aClose.pitch = Random.Range(0.8f, 1f);
- aClose.volume = Random.Range(0.8f, 1f);
- aClose.minDistance = 50f;
- aClose.loop = false;
- aClose.Play();
- }
- }
- // Play lightning gun shot and loop audio at specific position
- public void LightningGunLoop(Vector3 pos, Transform loopParent)
- {
- AudioSource aOpen = F3DPool.instance.SpawnAudio(lightningGunOpen, pos, null);
- AudioSource aLoop = F3DPool.instance.SpawnAudio(lightningGunLoop, pos, loopParent.parent);
- if (aOpen != null && aLoop != null)
- {
- aOpen.pitch = Random.Range(0.8f, 1f);
- aOpen.volume = Random.Range(0.8f, 1f);
- aOpen.minDistance = 50f;
- aOpen.loop = false;
- aOpen.Play();
- aLoop.pitch = Random.Range(0.95f, 1f);
- aLoop.volume = Random.Range(0.95f, 1f);
- aLoop.loop = true;
- aLoop.minDistance = 50f;
- aLoop.Play();
- }
- }
- // Play lightning gun closing audio at specific position
- public void LightningGunClose(Vector3 pos)
- {
- AudioSource aClose = F3DPool.instance.SpawnAudio(lightningGunClose, pos, null);
- if (aClose != null)
- {
- aClose.pitch = Random.Range(0.8f, 1f);
- aClose.volume = Random.Range(0.8f, 1f);
- aClose.minDistance = 50f;
- aClose.loop = false;
- aClose.Play();
- }
- }
- // Play flame shot and loop audio at specific position
- public void FlameGunLoop(Vector3 pos, Transform loopParent)
- {
- AudioSource aOpen = F3DPool.instance.SpawnAudio(flameGunOpen, pos, null);
- AudioSource aLoop = F3DPool.instance.SpawnAudio(flameGunLoop, pos, loopParent.parent);
- if (aOpen != null && aLoop != null)
- {
- aOpen.pitch = Random.Range(0.8f, 1f);
- aOpen.volume = Random.Range(0.8f, 1f);
- aOpen.minDistance = 50f;
- aOpen.loop = false;
- aOpen.Play();
- aLoop.pitch = Random.Range(0.95f, 1f);
- aLoop.volume = Random.Range(0.95f, 1f);
- aLoop.loop = true;
- aLoop.minDistance = 50f;
- aLoop.Play();
- }
- }
- // Play flame closing audio at specific position
- public void FlameGunClose(Vector3 pos)
- {
- AudioSource aClose = F3DPool.instance.SpawnAudio(flameGunClose, pos, null);
- if (aClose != null)
- {
- aClose.pitch = Random.Range(0.8f, 1f);
- aClose.volume = Random.Range(0.8f, 1f);
- aClose.minDistance = 50f;
- aClose.loop = false;
- aClose.Play();
- }
- }
- // Play laser pulse shot audio at specific position
- public void LaserImpulseShot(Vector3 pos)
- {
- if (timer_01 >= laserImpulseDelay)
- {
- AudioSource aSrc = F3DPool.instance.SpawnAudio(laserImpulseShot, pos, null);
- if (aSrc != null)
- {
- aSrc.pitch = Random.Range(0.9f, 1f);
- aSrc.volume = Random.Range(0.8f, 1f);
- aSrc.minDistance = 20f;
- aSrc.loop = false;
- aSrc.Play();
- timer_01 = 0f;
- }
- }
- }
- // Play laser pulse hit audio at specific position
- public void LaserImpulseHit(Vector3 pos)
- {
- if (timer_02 >= laserImpulseHitDelay)
- {
- AudioSource aSrc = F3DPool.instance.SpawnAudio(laserImpulseHit[Random.Range(0, plasmagunHit.Length)], pos, null);
- if (aSrc != null)
- {
- aSrc.pitch = Random.Range(0.8f, 1f);
- aSrc.volume = Random.Range(0.8f, 1f);
- aSrc.minDistance = 20f;
- aSrc.loop = false;
- aSrc.Play();
- timer_02 = 0f;
- }
- }
- }
- }
|