I would like the monster to have a normal sound play on loop with maybe a 5 second delay in between loops and then when the monster gets to be a certain distance from the player, say 25m, it will change sounds to an attack sound until the player moves out of range.
I've been messing around trying to get it to work for a few days and I'm just at a loss. Any ideas?
Do you just have a sound dragged over in the Inspector? PlayOnAwake and Loop? If so, there's no way to have that switch sounds. Need to write a script.
If you have a script already, it's easy, assuming you know scripting. Just look up "detect if enemy is nearby" and "how to play a sound," and combine those.
Answer by OtsegoDoom
Apr 22, 2014 at 06:10 PM
You can use sqrMagnitude to find the distance between 2 objects in space. (https://docs.unity3d.com/Documentation/ScriptReference/Vector3-sqrMagnitude.html)
Then just run that in a coroutine ( yield WaitForSeconds(5.0); ) that checks every 5 seconds (or whatever time you want) to see if the player is within a certain distance, if they are, play the new sound, if not play the old sound.
That worked pretty much perfectly! :) Thanks so much!
Up to 2 attachments (including images) can be used with a maximum of 524.3 kB each and 1.0 MB total.
The best place to ask and answer questions about development with Unity.
To help users navigate the site we have posted a site navigation guide.
If you are a new user to Unity Answers, check out our FAQ for more information.
Make sure to check out our Knowledge Base for commonly asked Unity questions.
If you are a moderator, see our Moderator Guidelines page.
We are making improvements to UA, see the list of changes.
Answers and Comments
23 People are following this question.
The name 'Joystick' does not denote a valid type ('not found')
How do I make ai play a certain sound, and then make the other ai reply?
Different music for pause menu?
Adding Audio clip in scripting
Making sounds wait for each other to finish