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是子弹的标签,球是目标物体,它的短处由玩家决定。这是关于,不是。没有改变,仍然是目标多个物体没有改变,仍然是目标多个物体