How to add a function to destroy this gameobject in game.

Hi Guys! I’m adding landmines into my game… now i want to be able to deactivate it if i can aim at it with the E key. So if i was going to add a peice of code to my script to be able to destroy the object if i click E on it. how would i do this and how would i make it show on screen saying “Press E To Disable LandMine.” Info is appreciated. Here is The landmine script.

   var hitPoints : float = 300.0;
var explosion : Transform;
private var callFunction : boolean = false;

function OnTriggerEnter (other : Collider) { 
    if (other.CompareTag ("Enemy")) { 
    other.SendMessageUpwards("ApplyDamage", hitPoints, SendMessageOptions.DontRequireReceiver);
       Explosion();
 } 
 
 if (other.CompareTag ("Player")){
 other.SendMessageUpwards("PlayerDamage", hitPoints, SendMessageOptions.DontRequireReceiver);
    Explosion();
 }
}

function ApplyDamage(){
 yield WaitForSeconds(0.5);
 Explosion();
}

function Explosion(){
 if(callFunction)
 return;
 callFunction = true;
 yield WaitForSeconds(0.1);
 Instantiate (explosion, transform.position, transform.rotation);
 Destroy(gameObject);
}

In your Update() method, use Physics.Raycast() to do a ray/collider intersection test on the world. Check if the ray intersected with a landmine’s collider and perform your logic to display the message and destroy the landmine when ‘E’ is pressed.

Here’s the roughed out logic…

// For ease-of-use, you probably want to make the deactivation message a GUIText   
// component attached to a gameobject. This way you can simply activate and
// deactivate the parent gameobject to show and hide the message at will.
public var LandmineDeactivationMessage:GameObject;

var landmineDeactivationKey:KeyCode = KeyCode.E;

var rayOrigin:Vector3;    // Set this to the cursor position in world space.
var rayDirection:Vector3; // This will usually be the camera's forward vector.
var rayLength:float=500;  // Set this to the desired maximum interaction distance.

var hit:RaycastHit;
if (Physics.Raycast(rayOrigin, rayDirection, hit, rayLength))
{
   // Check if the collider hit is a landmine
   if (hit.collider.tag == "Landmine")
   {
      // Turn on the landmine deactivation message.
      if (LandmineDeactivationMessage.active == false)
         LandmineDeactivationMessage.active = true;

      // Remove the landmine when the user hits the deactivation key.
      if (Input.GetKeyDown(landmineDeactivationKey) == true)
         GameObject.Destroy(hit.collider.gameObject);
   }
}
else
{
   // Turn off the landmine message when the cursor moves off.
   if (LandmineDeactivationMessage.active == true)
      LandmineDeactivationMessage.active = false;
}

thanks for this mate. will test this out :slight_smile: