Listener

From Unify Community Wiki
(Difference between revisions)
Jump to: navigation, search
(C# - Listener.cs)
 
(20 intermediate revisions by 3 users not shown)
Line 1: Line 1:
[[Category: Sound]]
+
{{Delete}}
Author: ''Jessy''
+
 
+
==Description==
+
 
+
This is a script that replaces the '''Volume''' property of the Audio Listener.  It behaves more intuitively than that of the Audio Listener itself.  See the page for my [[Audio|Audio script]] for extensive details.  :-D
+
 
+
==Instructions==
+
 
+
The '''Volume''' property performs the task that the similarly-named parameter of an Audio Listener was intended to perform.  Change its value in the Editor for immediate results, or use the methods described in the JavaScript or C# sections.
+
 
+
 
+
==JavaScript Instructions==
+
Use the following variable declaration in an external script, and drag the Game Object containing the Audio Listener component onto the '''Listener''' variable slot in the inspector:
+
 
+
<javascript>var listener : Listener;</javascript>
+
 
+
 
+
Use ''listener.Volume(newVolume);'' to assign the '''volume''' parameter a value of ''newVolume'', instead of assigning a value to '''volume''' directly.  (You may find the way this is handled via C# to be more intuitive.)
+
 
+
==JavaScript - Listener.js==
+
<javascript>@script RequireComponent(AudioListener)
+
 
+
var volume : float = 1;
+
 
+
private var loudnessExponent = Mathf.Log(Mathf.Sqrt(10), 2);
+
 
+
function Volume (newVolume)
+
{
+
volume = newVolume;
+
var listenerLoudness = Mathf.Pow(volume, loudnessExponent);
+
+
// volume values outside 0-1 mean nothing in Unity
+
listenerLoudness = Mathf.Clamp(listenerLoudness, 0, 1);
+
+
AudioListener.volume = listenerLoudness;
+
}
+
 
+
function Start()
+
{Volume(volume);}
+
 
+
// Change values in the Editor; get results.
+
function OnDrawGizmos ()
+
{Volume(volume);}</javascript>
+
 
+
 
+
== C# Instructions==
+
Use the following variable declaration in an external script, and drag the Game Object containing the Audio Listener component onto the '''Listener''' variable slot in the inspector:
+
 
+
<csharp>public Listener listener;</csharp>
+
 
+
 
+
Use ''listener.Volume = newVolume;'' to assign the '''volume''' parameter a value of ''newVolume'', instead of assigning a value to '''volume''' directly.
+
 
+
== C# - Listener.cs==
+
<csharp>using UnityEngine;
+
using System.Collections;
+
[RequireComponent (typeof(AudioListener))]
+
 
+
public class Listener : MonoBehaviour
+
{
+
public float volume = 1;
+
+
float loudnessExponent = Mathf.Log(Mathf.Sqrt(10), 2);
+
+
public float Volume
+
{
+
// no need for a getter; use AudioListener.volume instead
+
+
set
+
{
+
// volume values outside 0-1 mean nothing in Unity
+
volume = Mathf.Clamp01(value);
+
AudioListener.volume = Mathf.Pow(volume, loudnessExponent);
+
}
+
}
+
+
void Start()
+
{Volume = volume;}
+
+
// Change values in the Editor; get results.
+
void OnDrawGizmos ()
+
{Volume = volume;}
+
}</csharp >
+

Latest revision as of 16:05, 19 September 2011

This page is marked for deletion
Personal tools
Namespaces

Variants
Actions
Navigation
Extras
Toolbox