Unity OnTriggerEnter2D触发Debug正常但子弹未销毁问题求助
问题原因
你代码中的Destroy(gameObject)里的gameObject指代的是当前挂载Enemy脚本的游戏对象(也就是敌方单位本身),触发判定后实际销毁的是敌人,而非子弹。
修复方案
将判定逻辑里的销毁代码替换为销毁触发碰撞的对象即可:
using System.Collections; using System.Collections.Generic; using UnityEngine; public class Enemy : MonoBehaviour { void OnTriggerEnter2D(Collider2D collision) { if (collision.CompareTag("Bullet")) { Debug.Log("I die"); // 销毁触发碰撞的子弹 Destroy(collision.gameObject); // 如果需要同时销毁敌方单位,额外加一行即可 // Destroy(gameObject); } } }
额外注意事项
- 确认子弹对象的Tag已正确设置为
Bullet,拼写、大小写完全匹配,不存在多余空格 - 确认子弹对象已挂载Collider2D组件且勾选了
IsTrigger,同时至少有一方(敌方或子弹)挂载了Rigidbody2D组件,2D触发检测需要依赖刚体组件生效
内容的提问来源于stack exchange,提问作者lapezi prod.
相关产品推荐
相关产品推荐

