- Home /
destroying gameobject from other script
I have two gameobjects (Bug and Hand) in a 2d game. One of them(Hand) has a code that checks for a specific input and if the input happens another method checks for collision with Bug. If there is collision then I would like Bug to be destroyed. My problem is that I don't know how to destroy gameobject Bug from the script associated with Hand. I added the section code from Hand and marked where I would like the destroying to happen. Any help would be most appreciated. (just note that I cannot move method Attack as it has impact on the handAttack class further on in the code)
 public class handAttack : MonoBehaviour {
 
     float timeframe = 0;
     bool chkinput=false;
     bool IsOverlap = false;
     
 
     public void checkColisionForAttack(){
         Collider2D[] colliders = Physics2D.OverlapCircleAll (transform.position, 0.8f);
         if (colliders.Length > 0) {
             foreach (var c in colliders) { 
                 if (c.name == "Bug_Sheet_0") {
                     IsOverlap = true;
                     print ("we have collision");
                     print (colliders);
 // and this is where I would like the gameobject Bug to be destroyed
                 }
             }
         } else {
             IsOverlap = false;
         }
     }
 
         
     public void Attack (){
         if (Input.GetKeyDown (KeyCode.F)) {    
             chkinput = true;
         }
         if (chkinput) {
             timeframe += 1 * Time.deltaTime; 
             if (Input.GetKeyDown (KeyCode.G)) {
                 checkColisionForAttack();
                 timeframe = 0;
                 chkinput = false;
             }
             if (timeframe > 1) {
                 timeframe = 0;
                 chkinput = false;
 
             }
         }
 }
 
U could make it so the hand has a tag and if the bug touches a tag it will be destroyes... or click to spawn the tagged item or make the second hand that comes down have a tag.
Answer by TrentBost · May 15, 2015 at 10:57 PM
To Destroy the object, you can use: Destroy( c.gameObject );
 using UnityEngine;
 using System.Collections;
 
 public class handAttack : MonoBehaviour {
 
   float timeframe = 0;
   bool chkinput = false;
   bool IsOverlap = false;
 
   /////////////////////////////
   // Check Collision For Attack
   public void checkColisionForAttack() {
     Collider2D[] colliders = Physics2D.OverlapCircleAll( transform.position, 0.8f );
     if( colliders.Length > 0 ) {
       foreach( var c in colliders ) {
         if( c.name == "Bug_Sheet_0" ) {
           IsOverlap = true;
           print( "we have collision" );
           print( colliders );
           //// DESTROY: Bug GameObject
           Destroy( c.gameObject );
         };
       };
     } else {
       IsOverlap = false;
     };
   }
 
   /////////
   // Attack
   public void Attack() {
     if( Input.GetKeyDown( KeyCode.F ) ) {
       chkinput = true;
     };
     if( chkinput ) {
       timeframe += 1 * Time.deltaTime; 
       if( Input.GetKeyDown( KeyCode.G ) ) {
         checkColisionForAttack();
         timeframe = 0;
         chkinput = false;
       };
       if( timeframe > 1 ) {
         timeframe = 0;
         chkinput = false;
       };
     };
   }
 
 }
There are built-in functions that can do collision checks for you.
It would be worth-while to check into OnCollisionEnter2D and OnTriggerEnter2D
Code for that might look something like:
 [...]
 //////////////////////
 // ON Trigger Enter 2D
 void OnTriggerEnter2D( Collider2D col ) {
   switch( col.name ) {
     case "Bug_Sheet_0":
       Destroy( col.gameObject );
       break;
     default: break;
   };
 }
 [...]
Your answer
 
 
             Follow this Question
Related Questions
Destroy object on touch of object with specific class 3 Answers
Simple on Collision Help (C#) 2 Answers
[c#]collision script not working 1 Answer
Collision on specific Frames 1 Answer
 koobas.hobune.stream
koobas.hobune.stream 
                       
                
                       
			     
			 
                