- Home /
Question by
Dragonfly3r · Nov 06, 2014 at 04:50 PM ·
inputaudio
Play sound upon Input in Javascript
Using 1 of the default scripts by unity for its FPSInputController but finding some difficulty in playing an audio clip of the player jumping. Code is as follows:
private var motor : CharacterMotor;
public var jumpSound : AudioClip;
// Use this for initialization
function Awake () {
motor = GetComponent(CharacterMotor);
}
// Update is called once per frame
function Update () {
// Get the input vector from keyboard or analog stick
var directionVector = new Vector3(Input.GetAxis("Horizontal"), 0, Input.GetAxis("Vertical"));
if (directionVector != Vector3.zero) {
// Get the length of the directon vector and then normalize it
// Dividing by the length is cheaper than normalizing when we already have the length anyway
var directionLength = directionVector.magnitude;
directionVector = directionVector / directionLength;
// Make sure the length is no bigger than 1
directionLength = Mathf.Min(1, directionLength);
// Make the input vector more sensitive towards the extremes and less sensitive in the middle
// This makes it easier to control slow speeds when using analog sticks
directionLength = directionLength * directionLength;
// Multiply the normalized direction vector by the modified length
directionVector = directionVector * directionLength;
}
// Apply the direction to the CharacterMotor
motor.inputMoveDirection = transform.rotation * directionVector;
motor.inputJump = Input.GetButton("Jump");
if (Input.GetButton("Jump"))
{
jumpSound.PlayOneShot(jumpSound, 0.3);
jumpSound.Play();
}
}
// Require a character controller to be attached to the same game object
@script RequireComponent (CharacterMotor)
@script AddComponentMenu ("Character/FPS Input Controller")
Any ideas as to why this is not playing and how I can go about fixing it?
Comment
I find no 'Play()' or 'PlayOnShot()' method associated with an AudioClip in the reference, so I don't know how this code compiles. Add and AudioSource component to the game object with the above script and then do this to play:
audio.PlayOneShot(jumpSound, 0.3);
So you're saying I have to do something at bottom e.g.
@script RequireComponent (AudioSource)
Answer by Josenifftodd · Nov 06, 2014 at 05:26 PM
This might help you out.
@script RequireComponent(AudioSource)
function Start() {
audio.Play();
// Delay a clip by 1 sec (44100 samples)
audio.Play(44100);
}
Would this work in conjuction with
public var jumpSound : AudioClip;
if (Input.GetButton("Jump"))
{
jumpSound.PlayOneShot(jumpSound, 0.3);
jumpSound.Play();
}
?