- Home /
Triggers not working - What's wrong with this script?
Hi, I have written this script to change the sound of my footsteps depending on whether the player is inside or outside, or rather whether they are in a trigger called inside or not. However, the triggers don't seem to be working. As you can see I have put a print statement and this doesn't appear. I have set up the triggers and tag correctly so I'm sure it must be the code. Can you see where I've gone wrong? Thanks
EDIT - Might not even be the triggers, I've got it recognizing them with static vars but it doesn't change the sounds of the steps. Any Ideas?
var walkSounds : AudioClip[]; var indoorsounds : AudioClip[]; var audioStepLength = 0.3;
var inside = true;
function Awake() { if(inside){ PlayIndoorStepSounds(); } else if (!inside){ PlayStepSounds(); } } function OnTriggerEnter(other : Collider) {
if(other.gameObject.CompareTag == ("inside")){
inside = true;
print ("Inside");
}
} function OnTriggerExit(other : Collider) {
if(other.gameObject.CompareTag == ("inside")){
inside = false;
print ("Outside");
}
}
function PlayStepSounds () { var controller : CharacterController = GetComponent(CharacterController);
while (true) {
if (controller.isGrounded && controller.velocity.magnitude > 0.3) {
audio.clip = walkSounds[Random.Range(0, walkSounds.length)];
audio.Play();
yield WaitForSeconds(audioStepLength);
} else {
yield;
}
}
}
function PlayIndoorStepSounds () { var controller : CharacterController = GetComponent(CharacterController);
while (true) {
if (controller.isGrounded && controller.velocity.magnitude > 0.3) {
audio.clip = indoorsounds[Random.Range(0, indoorsounds.length)];
audio.Play();
yield WaitForSeconds(audioStepLength);
} else {
yield;
}
}
}
Answer by Pure Phase · May 04, 2010 at 01:03 PM
Found an easier way to do this:
var walkSounds : AudioClip[]; var indoorsounds : AudioClip[]; var audioStepLength = 0.3;
function Awake() {
PlayStepSounds();
}
function PlayStepSounds () { var controller : CharacterController = GetComponent(CharacterController);
while (true) {
if (controller.isGrounded && controller.velocity.magnitude > 0.3 && GUITextScript.INSIDE) {
audio.clip = indoorsounds[Random.Range(0, indoorsounds.length)];
audio.Play();
yield WaitForSeconds(audioStepLength);
}
else if (controller.isGrounded && controller.velocity.magnitude > 0.3) {
audio.clip = walkSounds[Random.Range(0, walkSounds.length)];
audio.Play();
yield WaitForSeconds(audioStepLength);
}
else {
yield;
}
}
}
Your answer
Follow this Question
Related Questions
Random Java Script Activation? 1 Answer
C# - Problem with trigger that won't activate 1 Answer
Why does my climb stairs animation not play? 1 Answer
Activate Script not Working 6 Answers
Enable/Disable script on trigger 1 Answer