Accesing Player colliderhit with other gameobject?

I want to play an audio from the woodAudio array when the player collides with the Wood tag. Why is this not working?

Keep in mind that I use the script on an empty gameobject which doesnt DestroyOnLoad and that controls the player scripts because I need the variable values in other scenes as well.

So I need the empty gameobject to see if the player collides with the wood tag, and then plays the audio from the array. Can someone help me out?

var woodAudio : AudioClip[];


function Start() {
 	var player = GameObject.Find("Player");

}

function OnControllerColliderHit(player : ControllerColliderHit) {

	if(player.collider.gameObject.tag == "Wood" && Input.GetKey("w")) {

		WalkWood();
	}
}

function WalkWood() {

	audio.clip = woodAudio[Random.Range(0, woodAudio.length)];
 	Camera.main.audio.Play();

 	audio.volume = 0.3;

}

So this script controls the player but is not actually attached to the player? “Keep in mind that I use the script on an empty gameobject which doesnt DestroyOnLoad and that controls the player scripts”

OnControllerColliderHit is when this script is attached to a gameObject with the Character Controller component.

"OnControllerColliderHit is called when the controller hits a collider … "

No character controller component, no hit.

Edit : The problem is the OnControllerColliderHit event is never happening. This can be proven with a simple debug :

function OnControllerColliderHit(player : ControllerColliderHit) {
    Debug.Log( "Yay the OnControllerColliderHit event just happened !" );
    // ....

Try changing

player.collider.gameObject.tag

to

player.gameObject.tag