Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/323.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# 子弹摧毁2游戏目标意图1统一2D_C#_Unity3d - Fatal编程技术网

C# 子弹摧毁2游戏目标意图1统一2D

C# 子弹摧毁2游戏目标意图1统一2D,c#,unity3d,C#,Unity3d,当我的子弹与一个球相撞时,如果有两个球在附近或在同一位置,所有物体都会同时被摧毁。我在我的脚本中设置了当子弹与其他玩家碰撞时,它将被摧毁 我试着检查每种类型的球,如果 if(other.gameObject.tag == "yerrow") { if (ballType >= 0 && ballType < 4) { clone1 = (GameObject)Instantiate(_ball, g

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

我试着检查每种类型的球,如果

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

编辑注:每个球与bulled碰撞都是毁灭意图球。我想一颗子弹摧毁一个物体

您可以将这两个功能结合起来,并使用active flag检查子弹状态

//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);
}
//检查子弹是否处于活动状态,然后销毁球。
if(other.gameObject.tag==“yerrow”&&other.gameObject.activeSelf)
{ 
如果(球型>=0&&球型<4)
{
...
摧毁(这个游戏对象);
}
else if(ballType==4)
{
摧毁(这个游戏对象);
}
//在这里摧毁并消灭子弹
销毁(其他游戏对象);
other.gameObject.SetActive(false);
}

您可以组合这两个功能,并使用活动标志检查项目符号状态

//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);
}
//检查子弹是否处于活动状态,然后销毁球。
if(other.gameObject.tag==“yerrow”&&other.gameObject.activeSelf)
{ 
如果(球型>=0&&球型<4)
{
...
摧毁(这个游戏对象);
}
else if(ballType==4)
{
摧毁(这个游戏对象);
}
//在这里摧毁并消灭子弹
销毁(其他游戏对象);
other.gameObject.SetActive(false);
}

在球上,在OnCollisionInter2d内

if(collision.collider.tag=="BulletTag")
{
     Destroy(collision.collider.gameObject);
     Destroy(gameObject);
}

仅在球上应用此选项。

在球上,在
OnCollisionInter2d

if(collision.collider.tag=="BulletTag")
{
     Destroy(collision.collider.gameObject);
     Destroy(gameObject);
}

仅在球上应用此选项。

设置bool以检查球子弹是否击中球,如果子弹与球碰撞,则设置为false

 public Player _player

 void start(){
 _powerUP = GameObject.Find("player").GetComponent<Player>();
 }

 if(other.gameObject.tag == "yerrow" && _player.canBe == true)
    {
        _player.canBe = false; // False just after hit
        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, 1f), transform.position.y - Random.Range(0,1));
             Instantiate(_ball, gameObject.transform.position, Quaternion.identity);
            Destroy(this.gameObject);
        }
        else if(ballType == 4)
        {
            Destroy(this.gameObject);
        }  
    }
public Player\u Player
void start(){
_powerUP=GameObject.Find(“player”).GetComponent();
}
if(other.gameObject.tag==“yerrow”&&&&\u player.canBe==true)
{
_player.canBe=false;//命中后立即为false
如果(球型>=0&&球型<4)
{
clone1=(GameObject)实例化(_ball,GameObject.transform.position,Quaternion.identity);
clone1.gameObject.GetComponent().ballMove=-4;
clone1.gameObject.GetComponent().transform.position=新向量2(transform.position.x-Random.Range(0,1f),transform.position.y-Random.Range(0,1));
实例化(_ball,gameObject.transform.position,Quaternion.identity);
摧毁(这个游戏对象);
}
else if(ballType==4)
{
摧毁(这个游戏对象);
}  
}

不要在Bullet On trigger中设置该值,在调用实例化克隆时设置为true,那么它应该可以工作

设置bool以检查球子弹是否击中球,如果子弹与球碰撞,则设置为false

 public Player _player

 void start(){
 _powerUP = GameObject.Find("player").GetComponent<Player>();
 }

 if(other.gameObject.tag == "yerrow" && _player.canBe == true)
    {
        _player.canBe = false; // False just after hit
        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, 1f), transform.position.y - Random.Range(0,1));
             Instantiate(_ball, gameObject.transform.position, Quaternion.identity);
            Destroy(this.gameObject);
        }
        else if(ballType == 4)
        {
            Destroy(this.gameObject);
        }  
    }
public Player\u Player
void start(){
_powerUP=GameObject.Find(“player”).GetComponent();
}
if(other.gameObject.tag==“yerrow”&&&&\u player.canBe==true)
{
_player.canBe=false;//命中后立即为false
如果(球型>=0&&球型<4)
{
clone1=(GameObject)实例化(_ball,GameObject.transform.position,Quaternion.identity);
clone1.gameObject.GetComponent().ballMove=-4;
clone1.gameObject.GetComponent().transform.position=新向量2(transform.position.x-Random.Range(0,1f),transform.position.y-Random.Range(0,1));
实例化(_ball,gameObject.transform.position,Quaternion.identity);
摧毁(这个游戏对象);
}
else if(ballType==4)
{
摧毁(这个游戏对象);
}  
}

不要在Bullet On trigger中设置该值,在调用实例化克隆时设置为true,那么它应该可以工作

这可能是因为你的子弹太快了,在它检测到第一次碰撞之前,它记录了另一次碰撞。你能做的就是当碰撞器与某物发生碰撞时禁用碰撞器,它应该能防止射击旋转,如Row、bullet、ball、player、4种类型或2种类型?我只是试图将速度降低得太慢,然后尝试一下。结果是一样的。@shingo yerrow是子弹的标记,球是目标物体,它的短距离是关于,而不是。这可能是因为你的子弹太快了,在它检测到第一次碰撞之前,它记录了另一次碰撞。你能做的就是当碰撞器与某物发生碰撞时禁用碰撞器,它应该能防止射击旋转,如Row、bullet、ball、player、4种类型或2种类型?我只是试图将速度降低得太慢,然后尝试一下。结果是一样的。@shingo yerrow是子弹的标签,球是目标物体,它的短处由玩家决定。这是关于,不是。没有改变,仍然是目标多个物体没有改变,仍然是目标多个物体