Bullet Collision disables/re-enable mesh renderer & collider

Been trying to make wall in my game disable its mesh renderer & collision collider when hit by the player’s bullet. After 10 seconds have passed the mesh renderer & collision collider will re-enable themselves again.

Currently I’ve managed to make get the mesh renderer & collision collider to disable and re-enable via key press but struggling to figure out how to make it work for bullet collision & timer.

function Update() {

if (Input.GetKeyDown(KeyCode.Z)) {
    // toggle visibility:
    renderer.enabled = false;
    collider.isTrigger = true;
}
if (Input.GetKeyDown(KeyCode.X)) {
    renderer.enabled = true;
    collider.isTrigger = false;
}

} 

Anyone able to figure out what I need to get this to work for when the wall collides with bullet & implement timer to count for 10 seconds before re-enabling the collision collider & mesh renderer?

if your bullet is a raycast you use: http://docs.unity3d.com/ScriptReference/Physics.Raycast.html if your bullet is based on collision (actually shooting an object) use: http://docs.unity3d.com/ScriptReference/Collider.OnCollisionEnter.html for setting up a timer use: http://docs.unity3d.com/ScriptReference/Coroutine.html

1 Answer

1

Something like:

function OnTriggerEnter(col : Collider) {
	if (col.tag == "Bullet") { //If it is the bullet entering the collider
	renderer.enabled = false;
	collider.enabled = false;
	Invoke ("ReEnable",10); //Re-enable it in 10 seconds
	}
}
function ReEnable() {
	renderer.enabled = true;
	collider.enabled = true;
}

Set your bullet objects tag to “Bullet”, its collider to IsTrigger and remember the rigidbody Component.

Cheers mate that worked perfectly :-)