Eloren
Eloren

Reputation: 323

Activate script in collided gameObject

How can I activate part of the code in other script? Attention: I don't need to activate all scripts. For example, a bunch of bullets flies around a player. And when one collide with a player, then need to activate part of the script of the collided object (that touched the player).

PlayerControl.cs

void OnCollisionEnter2D(Collision2D col)
     {
          if (col.gameObject.tag == "Bullet1")
          {
             lasthit = 1f;
          // I need to activate Destroyy() in Bullet1 script
          }
     }

Bullet1.cs

public void Destroyy()
    {
        Debug.Log("Destroyed!"); // I need to activate this part of the code
    } // ONLY in Bullet1.cs

Upvotes: 0

Views: 52

Answers (3)

Eloren
Eloren

Reputation: 323

Actiovating bool in Bullet1 script

Player.cs

void OnCollisionEnter2D(Collision2D col)
    {
         if (col.gameObject.tag == "Bullet1")
         {
            col.gameObject.GetComponent<Bullet1pt().booldestroy = true;
         }
   }

Bullet1.cs

public bool booldestroy;
private void Update()
    {
        if (booldestroy)
        {
            Destroyy();
        }
    }

Upvotes: 0

TimChang
TimChang

Reputation: 2417

Just getComponent is be easier

void OnCollisionEnter2D(Collision2D col)
     {
          Bullet1 b = col.gameObject.GetComponent<Bullet1>();
          if (b == null)
          {
              return;
          }

          lasthit = 1f;
          b.Destroyy();
     }

Upvotes: 0

Gazihan Alankus
Gazihan Alankus

Reputation: 11984

The code below shows how to do it:

void OnCollisionEnter2D(Collision2D col)
     {
          if (col.gameObject.tag == "Bullet1")
          {
             lasthit = 1f;
          // I need to activate Destroyy() in Bullet1 script
             // HERE'S HOW: 
             if(col.gameObject.GetComponent<Bullet1>() != null)
               col.gameObject.GetComponent<Bullet1>().Destroyy();
          }
     }

Upvotes: 1

Related Questions