x


How do I play a sound during a level change?

Earlier, I asked the question how to end a level. It was solved with the following script:

//Script to revert winning player back to main menu

var levelToLoad : String;

function OnTriggerEnter(hit : Collider) {

Application.LoadLevel(levelToLoad);

}//END FUNCTION ONTRIGGERENTER

Now, I want to add a sound to it. What I've attempted doing is creating a variable called triumph, and then using the audio.PlayOneShot code. However, this never plays it, and actually prevents the player from moving to the next level. I'm not sure how to add the sound to it. The sound is named Pop! Triumph! and it doesn't loop. Also, I'm not going to use any other sound, so it doesn't have to be a variable.

So can anyone make an addition to this script to make the sound play?

more ▼

asked Jun 22, 2010 at 08:34 AM

Biendeo gravatar image

Biendeo
142 32 25 36

Do you have any errors in your console? if it never loads the level, it sounds like it's causing an error and ceasing execution of that function.

Jun 22, 2010 at 11:08 AM duck ♦♦
(comments are locked)
10|3000 characters needed characters left

3 answers: sort voted first
  1. Import your audio files into your Unity Project. These are now Audio Clips.
  2. Go to GameObject->Create Empty from the menubar.
  3. With the new GameObject selected, select Component->Audio->Audio Source.
  4. Assign the Audio Clip property of the Audio Source Component in the Inspector.

Hints:

* The key to a nice sound environment is tweaking the Rolloff Factor.
* 3D audio effects will only work for mono Audio Clips. Stereo Audio Clips will be mixed as-is into the sound output. 

I'll give u a C# verison, the sound file has to be in ur "Resources" Folder.

using UnityEngine;
using System.Collections;

public class Sound_Player: MonoBehaviour 
{
    AudioSource audio_source;
    AudioClip sound;
        // Use this for initialization
    void Start ()
    {
        audio_source = (AudioSource)gameObject.AddComponent("AudioSource");
        sound = (AudioClip)Resources.Load("File Name");
        audio_source.clip = sound;
    }
        // Update is called once per frame
    void Update ()
    {

    }


//Script to revert winning player back to main menu

var levelToLoad : String;

function OnTriggerEnter(hit : Collider) {

audio_source.Play();
Application.LoadLevel(levelToLoad);

}//END FUNCTION ONTRIGGERENTER


}
more ▼

answered Jun 22, 2010 at 08:50 AM

AnaRhisT gravatar image

AnaRhisT
965 88 61 74

(comments are locked)
10|3000 characters needed characters left

The problem is that the sound will be stopped when you try to load the next level

What I would do is play a sound (using audio.Play, not PlayOneShot), and wait until audio.IsPlaying is false. After that, load the level like you normally would

more ▼

answered Jun 22, 2010 at 01:15 PM

Mike 3 gravatar image

Mike 3
32.8k 18 80 290

(comments are locked)
10|3000 characters needed characters left

The reason why sound stops is that SoundClip and SoundSource are all destroyed while changing level. Use "DontDestroyOnLoad" method and protect GameObjects with sound components.

more ▼

answered Oct 31, 2012 at 09:37 PM

f_Linoal gravatar image

f_Linoal
1

(comments are locked)
10|3000 characters needed characters left
Your answer
toggle preview:

Up to 2 attachments (including images) can be used with a maximum of 524.3 kB each and 1.0 MB total.

Follow this question

By Email:

Once you sign in you will be able to subscribe for any updates here

By RSS:

Answers

Answers and Comments

Topics:

x8812
x1632
x1342
x113
x58

asked: Jun 22, 2010 at 08:34 AM

Seen: 6176 times

Last Updated: Oct 31, 2012 at 09:37 PM