- Home /
Question by
Trollvahkiin · Sep 15, 2013 at 08:30 PM ·
audiodistanceunits
How can I play different audio depending on the distance?
Hey,
I put together a script where the enemy teleports around until he gets close enough (the number can be set in the inspector) When he gets close enough he stops teleporting around and plays a sound. Then when you get even closer to him he plays another sound. The problem I have is that I can't get the audios to play.
var player : Transform; // the Object the player is controlling
var spawnOrgin : Vector3; // this will be the bottom right corner of a square we will use as the spawn area
var maximum : Vector3; // max distance in the x, y, and z direction the enemy can spawn
var spawnRate : float; // how often the enemy will respawn
var distanceToPlayer : float; // how close the enemy has to be to the player to play music
var nearPlayer : boolean = false; // use this to stop the teleporting if near the player
var audioPlayed : boolean = false;
var distanceToChase : int;
var chasing : boolean = false;
var audio01 : AudioClip;
var audio02 : AudioClip;
private var nextTeleport : float = 0.0f; // will keep track of when we to teleport next
function Start ()
{
nextTeleport = spawnRate;
}
function Update ()
{
if (!nearPlayer) // only teleport if we are not close to the player
{
if (Time.time > nextTeleport) // only teleport if enough time has passed
{
transform.position = Vector3( Random.Range(spawnOrgin.x, maximum.x), Random.Range(spawnOrgin.y, maximum.y), Random.Range(spawnOrgin.z, maximum.z) ); // teleport
nextTeleport += spawnRate; // update the next time to teleport
}
}
if (Vector3.Distance(transform.position, player.position) <= distanceToPlayer)
{
if (audio && audio.clip && !audio.isPlaying && renderer.isVisible && !audioPlayed) // play the audio if it isn't playing
audio.PlayOneShot(audio01);
nearPlayer = true;
audioPlayed = true;
}
else
{
if (audio01)
{
audio02.Stop();
nearPlayer = false;
audioPlayed = false;
}
}
if (Vector3.Distance(transform.position, player.position) <= distanceToChase)
{
if (audio && audio.clip && !audio.isPlaying) // play the audio if it isn't playing
audio.PlayOneShot(audio02);
chasing = true;
chaseIsOn();
}
else
{
if (audio02)
{
audio02.Stop();
chasing = false;
}
}
}
function chaseIsOn()
{
Debug.Log("THE CHASE IS ON");
}
Comment