You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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.

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 23:09:01