test
testing
This commit is contained in:
@@ -0,0 +1,76 @@
|
||||
using UnityEngine;
|
||||
using System.Collections;
|
||||
|
||||
[RequireComponent (typeof (Detonator))]
|
||||
[AddComponentMenu("Detonator/Sound")]
|
||||
public class DetonatorSound : DetonatorComponent {
|
||||
|
||||
public AudioClip[] nearSounds;
|
||||
public AudioClip[] farSounds;
|
||||
|
||||
public float distanceThreshold = 50f; //threshold in m between playing nearSound and farSound
|
||||
public float minVolume = .4f;
|
||||
public float maxVolume = 1f;
|
||||
public float rolloffFactor = 0.5f;
|
||||
|
||||
private AudioSource _soundComponent;
|
||||
private bool _delayedExplosionStarted = false;
|
||||
private float _explodeDelay;
|
||||
|
||||
override public void Init()
|
||||
{
|
||||
_soundComponent = (AudioSource)gameObject.AddComponent ("AudioSource");
|
||||
}
|
||||
|
||||
void Update()
|
||||
{
|
||||
_soundComponent.pitch = Time.timeScale;
|
||||
|
||||
if (_delayedExplosionStarted)
|
||||
{
|
||||
_explodeDelay = (_explodeDelay - Time.deltaTime);
|
||||
if (_explodeDelay <= 0f)
|
||||
{
|
||||
Explode();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private int _idx;
|
||||
override public void Explode()
|
||||
{
|
||||
if (detailThreshold > detail) return;
|
||||
|
||||
if (!_delayedExplosionStarted)
|
||||
{
|
||||
_explodeDelay = explodeDelayMin + (Random.value * (explodeDelayMax - explodeDelayMin));
|
||||
}
|
||||
if (_explodeDelay <= 0)
|
||||
{
|
||||
// _soundComponent.minVolume = minVolume;
|
||||
// _soundComponent.maxVolume = maxVolume;
|
||||
// _soundComponent.rolloffFactor = rolloffFactor;
|
||||
|
||||
if (Vector3.Distance(Camera.main.transform.position, this.transform.position) < distanceThreshold)
|
||||
{
|
||||
_idx = (int)(Random.value * nearSounds.Length);
|
||||
_soundComponent.PlayOneShot(nearSounds[_idx]);
|
||||
}
|
||||
else
|
||||
{
|
||||
_idx = (int)(Random.value * farSounds.Length);
|
||||
_soundComponent.PlayOneShot(farSounds[_idx]);
|
||||
}
|
||||
_delayedExplosionStarted = false;
|
||||
_explodeDelay = 0f;
|
||||
}
|
||||
else
|
||||
{
|
||||
_delayedExplosionStarted = true;
|
||||
}
|
||||
}
|
||||
|
||||
public void Reset()
|
||||
{
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user