【问题标题】:How do i destroy my GameObject when the player enters its trigger?当玩家进入它的触发器时,我如何销毁我的游戏对象?
【发布时间】:2019-12-16 13:53:03
【问题描述】:

当我的玩家进入触发器时,我似乎无法让我的气球(游戏对象)销毁。 有谁知道如何做到这一点? 我尝试使用碰撞,但没有奏效。 这是不起作用的碰撞脚本(它在气球上)

public class PistolPickup : MonoBehaviour
{
    void OnCollisionEnter(Collision collision)
    {
        if (collision.gameObject.name == "Player")
        {
            Destroy(collision.gameObject);
            Debug.Log("Destroyed");
        }
    }
}

【问题讨论】:

  • collision.gameObject 是你想要的播放器 this.gameObject
  • 对不起,我不明白你的意思
  • @ImNotAGingerBreadIPromise 这意味着你需要Destroy(this.gameObject);

标签: c# unity3d


【解决方案1】:

首先您应该了解 OnCollisionEnter 事件和 OnTriggerEnter 事件之间的区别。前者在游戏对象touch时触发,后者在一个重叠其他触发时触发。

要使上述两种方法起作用,对象上必须有碰撞器。但是根据您选择的上述方法,您还应该相应地检查对撞机上的 IsTrigger 选项。

所以假设以上所有都完成了,你可以让你的代码看起来像这样:

public class PistolPickup : MonoBehaviour
{
    void OnTriggerEnter(Collision collision)
    {
        if (collision.gameObject.name == "Player")
        {
            Destroy(this.gameObject);
            Debug.Log("Destroyed the pickup.");
        }
    }
}

注意:要使代码正常工作,您必须检查拾取对象碰撞器上的 IsTrigger 选项。

【讨论】:

  • 你的一个物体也需要一个刚体,同样重要的是要注意,刚体和对撞机需要是相同的维度类型,也就是 2d 或 3d,你不能混合它们。跨度>
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多