c# - 子弹摧毁 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;
}
}
编辑注意:每个球与被欺负的球相撞都是破坏意图。我想用一颗子弹摧毁一个物体
解决方案
您可以结合这两个功能,并使用活动标志来检查子弹状态。
//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);
}
推荐阅读
- ruby-on-rails - 尽管明确设置了无限 TTL,但 Google Cloud Storage 仍为请求的资产设置了到期日期
- javascript - 如何访问由 d3.groups 产生的内部数组?
- amazon-s3 - 如何克服 AWS Glue 作业中的 Spark“设备上没有剩余空间”错误
- spring-boot - 如何在 Spring Boot JPA 中通过 ID 保存 ManyToOne 属性
- javascript - 预加载器不会消失
- rust - Snappy 不与生锈联系起来
- magento - Composer 2,您的某些插件似乎与它不兼容
- java - 在 Java 的 Linkedlist 实现中,head 如何使用新节点进行更新
- python - Pandas 通过迭代除索引之外的所有列来规范化数据帧
- qualcomm - HVX 相机流 (Hexagon SDK) 在 Intrinsyc Qualcomm Snapdtragon 845 uSOM Dev 中不起作用。成套工具