Instantiated Character collision issue

I’ve been trying to get the OnCollisionEnter function to work with characters. It works fine, unless the character is Instantiated. I’ve tried this with as simple a setup as i could; i made a prefab with a CharacterController, and put this script on, then put it in a scene, threw some rigidbodies at it, and it worked. When the instantiated one came up though, it wouldn’t work at all. It didn’t print the time either, so I think that OnCollisionEnter isn’t being called at all.

I wouldn’t be surprised if i’ve overlooked something obvious, but I can’t seem to figure out what.

// newThing is the same object; just instantiates another one of itself
var newThing : GameObject;
var health = 3;
function OnCollisionEnter (collision : Collision) {
	print(Time.time);
	health -= 1;
	if (health <= 0) {
		Die();
	}
}
function Die () {
	Instantiate(newThing, transform.position + Vector3.right*2, transform.rotation);
	Destroy(gameObject);
}

I’ve been at the issue for a while longer, and even a script like

function OnCollisionEnter (collision : Collision) { 
   print(Time.time); 
}

seems not to work on instantiated CharacterControllers. The weird thing is, it seems to work depending on what it comes in contact with; so far it fails almost every time, except for when a specific ragdoll hits it. I doubt it’s a bug, there’s probably something I’m missing; anyone have any ideas? If not, is there any more info I should give?

The recommended technique is to use the OnControllerColliderHit function rather than OnCollisionEnter when using CharacterControllers. The OnCollisionXXX functions are generated by the physical simulation. The CharacterController, however, works a bit differently and so collisions won’t necessarily work the way you would expect.