- Home /
How do you disable your own Collider? Bugfix
I have a script on an object to disable it's own collider and renderer when it collides with something. This is so the audio will continue to play until it is finished before detroying the object. It seems like the object cannot find its own collider, and also cannot turn off it's own renderer.
Here is the code on the object:
function OnTriggerEnter2D( coll : Collider2D) {
//hit something, do damage and destroy
if (coll.gameObject.tag == "Player"){
coll.gameObject.SendMessage("ApplyDamage", 34);
}
disappear();
}
function disappear(){
gameObject.collider.enabled = false;
gameObject.renderer.enabled = false;
yield WaitForSeconds(audio.clip.length);
Destroy(gameObject);
}
Here is the object with the script and collider on it (there is exactly one collider and renderer)
And here is the error:
Should the sprite renderer and 2d collider supposed to be found by the keywords "renderer" and "collider"? How can I fix this? The renderer does not disable, but does not error either. The collider does error, as if it doesn't even have one.
Answer by HarshadK · Nov 18, 2014 at 07:53 AM
collider and renderer are objects for 3D game objects. For 2D you need to get the specific component. Also 2D objects use SpriteRenderer and not the renderer. Change your lines from function disappear() to:
gameObject.GetComponent(CircleCollider2D).enabled = false;
gameObject.GetComponent(SpriteRenderer).enabled = false;