Add bow sounds, fix 2nd floor roof, add lights to archery range
This commit is contained in:
43
Assets/Scripts/Audio/AudioClipGroup.cs
Normal file
43
Assets/Scripts/Audio/AudioClipGroup.cs
Normal file
@@ -0,0 +1,43 @@
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
|
||||
namespace Audio
|
||||
{
|
||||
[CreateAssetMenu(menuName = "AudioClipGroup")]
|
||||
public class AudioClipGroup : ScriptableObject
|
||||
{
|
||||
[Range(0, 2)] public float volumeMin = 1;
|
||||
[Range(0, 2)] public float volumeMax = 1;
|
||||
[Range(0, 2)] public float pitchMin = 1;
|
||||
[Range(0, 2)] public float pitchMax = 1;
|
||||
|
||||
public float delay = 0.1f;
|
||||
public List<AudioClip> audioClips;
|
||||
|
||||
private float _timestamp;
|
||||
|
||||
public void OnEnable()
|
||||
{
|
||||
_timestamp = 0;
|
||||
}
|
||||
|
||||
public void Play()
|
||||
{
|
||||
if (AudioSourcePool.Instance == null) return;
|
||||
|
||||
Play(AudioSourcePool.Instance.GetAudioSource());
|
||||
}
|
||||
|
||||
public void Play(AudioSource source)
|
||||
{
|
||||
if (audioClips.Count <= 0) return;
|
||||
if (_timestamp > Time.time) return;
|
||||
_timestamp = Time.time + delay;
|
||||
|
||||
source.volume = Random.Range(volumeMin, volumeMax);
|
||||
source.pitch = Random.Range(pitchMin, pitchMax);
|
||||
source.clip = audioClips[Random.Range(0, audioClips.Count)];
|
||||
source.Play();
|
||||
}
|
||||
}
|
||||
}
|
||||
11
Assets/Scripts/Audio/AudioClipGroup.cs.meta
Normal file
11
Assets/Scripts/Audio/AudioClipGroup.cs.meta
Normal file
@@ -0,0 +1,11 @@
|
||||
fileFormatVersion: 2
|
||||
guid: e4f2dd8befe0f4a48b0c418911ffa5c0
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
34
Assets/Scripts/Audio/AudioSourcePool.cs
Normal file
34
Assets/Scripts/Audio/AudioSourcePool.cs
Normal file
@@ -0,0 +1,34 @@
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
|
||||
namespace Audio
|
||||
{
|
||||
public class AudioSourcePool : MonoBehaviour
|
||||
{
|
||||
public static AudioSourcePool Instance;
|
||||
public AudioSource audioSourcePrefab;
|
||||
|
||||
private List<AudioSource> _audioSources;
|
||||
|
||||
public void Awake()
|
||||
{
|
||||
Instance = this;
|
||||
_audioSources = new List<AudioSource>();
|
||||
}
|
||||
|
||||
public AudioSource GetAudioSource()
|
||||
{
|
||||
foreach (AudioSource source in _audioSources)
|
||||
{
|
||||
if (!source.isPlaying)
|
||||
{
|
||||
return source;
|
||||
}
|
||||
}
|
||||
|
||||
AudioSource newSource = Instantiate(audioSourcePrefab, this.transform);
|
||||
_audioSources.Add(newSource);
|
||||
return newSource;
|
||||
}
|
||||
}
|
||||
}
|
||||
11
Assets/Scripts/Audio/AudioSourcePool.cs.meta
Normal file
11
Assets/Scripts/Audio/AudioSourcePool.cs.meta
Normal file
@@ -0,0 +1,11 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 20146867efb6b0c4ab2cf17e2d044c63
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
Reference in New Issue
Block a user