【问题标题】:Bullet not destroying子弹不破坏
【发布时间】:2021-12-31 09:46:25
【问题描述】:

我希望我的子弹在 OnTrigger 上被破坏,但它不会被破坏,但 Debug.Log 工作正常。我已经尝试了一切,例如重写脚本,替换它并一遍又一遍地附加它。有人可以帮我吗?

这是我的代码:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Enemy : MonoBehaviour
{
    public GameObject Bullet;
    
    void OnTriggerEnter2D(Collider2D collision)
    {
        if (collision.CompareTag("Bullet"))
        {
            Debug.Log("I die"); 
            Destroy(gameObject);
        }
    }
}

【问题讨论】:

  • 不是最好的询问地点

标签: c# unity3d destroy gameobject


【解决方案1】:

您正在破坏Enemy 游戏对象。要同时销毁子弹,请尝试以下代码:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Enemy : MonoBehaviour
{
    public GameObject Bullet;

    void OnTriggerEnter2D(Collider2D collision)
    {
        if (collision.CompareTag("Bullet"))
        {
            Debug.Log("I die");
            Destroy(gameObject); // destroying self object (Enemy Object)
            Destroy(collision.gameObject); // destroying collided object (Bullet Object)
        }
    }
}

【讨论】:

  • 谢谢你!现在效果很好!!你是最好的!!!!
【解决方案2】:

如果你想销毁子弹,你应该将子弹对象作为参数传递给函数 Destroy(),但你传递的是敌人对象。

将 Destory(gameObject) 替换为 Destroy(Bullet)。

或者,如果您想销毁被触发的子弹,请将其替换为:Destroy(collision.gameObject)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-15
    • 2020-07-01
    相关资源
    最近更新 更多