- Home /
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);
 }
Answer by Brian Stone · Jul 08, 2012 at 07:33 AM
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;
 }
Your answer
 
 
             Follow this Question
Related Questions
The name 'Joystick' does not denote a valid type ('not found') 2 Answers
Is it possible to change a variable, into a script not assigned to any game object? 3 Answers
When do we need to use Class? 1 Answer
hide object start script 4 Answers
My Zombie Model is coming at me sideways with the AI 1 Answer
 koobas.hobune.stream
koobas.hobune.stream 
                       
                
                       
			     
			 
                