- Home /
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:
Answer by Phantomized · Oct 20, 2014 at 06:07 AM
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.