首页 > 解决方案 > 在 Unity 中检测碰撞并销毁游戏对象

问题描述

所以我试图在 Unity 中创建一个 2D 游戏,其中游戏对象会在撞到墙壁时被破坏。所以我决定使用 isTrigger 函数并将脚本添加到每个墙上。但是,我不知道为什么游戏对象没有被破坏。我尝试将墙壁和游戏对象的碰撞类型设置为离散和连续,并且我还在墙壁上添加了静态刚体以查看是否有帮助,甚至尝试更改墙壁碰撞体的大小。

这是wallscript的代码

public class wallScript : MonoBehaviour {

// Use this for initialization
void Start () {

}

// Update is called once per frame
void Update () {

}


public void OnTrigger2D(Collider2D other)
{
    if (other.tag == "player01")
    {
        Destroy(other.gameObject);
    }

}}

ps 即使我删除了条件语句 Destroy() 仍然不起作用

标签: c#unity3d

解决方案


您应该使用void OnCollisionEnter2D(Collision2D other) {...}而不是void OnTrigger2D(Collider2D other). 并取消Is Trigger选中对象 Collider 上的复选框。


推荐阅读