Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/314.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在碰撞的游戏对象中激活脚本_C#_Unity3d - Fatal编程技术网

C# 在碰撞的游戏对象中激活脚本

C# 在碰撞的游戏对象中激活脚本,c#,unity3d,C#,Unity3d,如何激活其他脚本中的部分代码? 注意:我不需要激活所有脚本。例如,一束子弹围绕着一个玩家飞来飞去。当一个人与玩家发生碰撞时,则需要激活碰撞对象的部分脚本(与玩家发生碰撞) PlayerControl.cs void OnCollisionEnter2D(Collision2D col) { if (col.gameObject.tag == "Bullet1") { lasthit = 1f; //

如何激活其他脚本中的部分代码? 注意:我不需要激活所有脚本。例如,一束子弹围绕着一个玩家飞来飞去。当一个人与玩家发生碰撞时,则需要激活碰撞对象的部分脚本(与玩家发生碰撞)

PlayerControl.cs

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

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

下面的代码显示了如何执行此操作:

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();
          }
     }

无效OnCollisionInter2D(Collision2D列)
{
如果(col.gameObject.tag==“Bullet1”)
{
lasthit=1f;
//我需要在Bullet1脚本中激活Destroy()
//以下是方法:
if(col.gameObject.GetComponent()!=null)
col.gameObject.GetComponent().Destroy();
}
}

只需获取组件就更容易了

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

          lasthit = 1f;
          b.Destroyy();
     }
无效OnCollisionInter2D(Collision2D列)
{
Bullet1 b=col.gameObject.GetComponent();
如果(b==null)
{
返回;
}
lasthit=1f;
b、 破坏();
}

在Bullet1脚本中激活布尔值

Player.cs

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

激活脚本的一部分是什么意思?当发生冲突时,您希望调用的是类还是方法?您的标记可能会出错。我刚刚编辑了代码,试试这个。不,如果你再添加一个
,那么它就不起作用了,所以成功的机会很低