首页 > 解决方案 > 子弹摧毁 2 游戏对象意图一统一 2D

问题描述

当我的子弹与一个球相撞时,如果附近或同一位置有 2 个球,所有物体都会同时被摧毁。当子弹与其他玩家相撞时,我在脚本中设置了它将被摧毁。

我试图用 else if 检查每种球的类型

 if(other.gameObject.tag == "yerrow")
    { 
        if (ballType >= 0 && ballType < 4)
        {

            clone1 = (GameObject)Instantiate(_ball, gameObject.transform.position, Quaternion.identity);
            clone1.gameObject.GetComponent<Balloon_Behave>().ballMove = -4;
            clone1.gameObject.GetComponent<Balloon_Behave>().transform.position = new Vector2(transform.position.x - Random.Range(0, 0.5f), transform.position.y - Random.Range(0,1));

            clone2 = Instantiate(_ball, gameObject.transform.position, Quaternion.identity);

            Destroy(this.gameObject);
        }
        else if (ballType == 4)
        {
            Destroy(this.gameObject);
        }
        Debug.Log("Yerrow COLl");
    }

耶罗脚本毁灭自己

  private void OnTriggerEnter2D(Collider2D other)
      {  
         if (other.gameObject.tag != "Player")
          {
             Destroy(this.gameObject);
             player.CanFire = true;
          }
      }

编辑注意:每个球与被欺负的球相撞都是破坏意图。我想用一颗子弹摧毁一个物体

标签: c#unity3d

解决方案


您可以结合这两个功能,并使用活动标志来检查子弹状态。

//Check if the bullet is active, then destroy the ball.
if(other.gameObject.tag == "yerrow" && other.gameObject.activeSelf)
{ 
    if (ballType >= 0 && ballType < 4)
    {
        ...
        Destroy(this.gameObject);
    }
    else if (ballType == 4)
    {
        Destroy(this.gameObject);
    }

    //Destroy and deactive the bullet here
    Destroy(other.gameObject);
    other.gameObject.SetActive(false);
}

推荐阅读