Unity3d 为什么对象没有被销毁(光线投射)?

Unity3d 为什么对象没有被销毁(光线投射)?,unity3d,Unity3d,我有一些2D对象,我希望它们在鼠标结束时消失,OnMouseOver()函数不能很好地工作,所以我尝试获取鼠标位置,然后用光线投射检查2D对象是否与光线投射发生碰撞,但我不知道为什么不能很好地工作,有时对象没有反应,有时会删除多个对象 Vector3 mousePos = Camera.main.ScreenToWorldPoint(Input.mousePosition); Vector2 mousePos2D = new Vector2(mousePos.x, mousePos.y)

我有一些2D对象,我希望它们在鼠标结束时消失,OnMouseOver()函数不能很好地工作,所以我尝试获取鼠标位置,然后用光线投射检查2D对象是否与光线投射发生碰撞,但我不知道为什么不能很好地工作,有时对象没有反应,有时会删除多个对象

  Vector3 mousePos = Camera.main.ScreenToWorldPoint(Input.mousePosition);
  Vector2 mousePos2D = new Vector2(mousePos.x, mousePos.y);
  RaycastHit2D  hit = Physics2D.Raycast(mousePos2D, Vector2.zero);
        if (hit.collider != null && hit.collider.name == "item")
        {
            Destroy(gameObject);
        }

我认为这是因为当你说销毁(游戏对象);您指的是您当前的游戏对象(脚本附加到的)。另外,如果(hit.collider.Comparetag(“标记名”)

哦,明白了!谢谢SBfam 22,下面是更改后的代码,而不是使用hit.collider.name==“item”,则应该使用标记if(hit.collider.Comparetag(“标记名”)

 Vector3 mousePos = Camera.main.ScreenToWorldPoint(Input.mousePosition);
  Vector2 mousePos2D = new Vector2(mousePos.x, mousePos.y);
  RaycastHit2D  hit = Physics2D.Raycast(mousePos2D, Vector2.zero);
        if (hit.collider != null && hit.collider.name == "item")
        {
            Destroy(hit.transform.gameObject);
        }

我认为问题不在于此,我已经尝试将名称更改为tag,但它不起作用,我认为问题在于多个对象中的条件受到尊重,因为我没有指定鼠标碰撞的位置,并且多个对象具有相同的名称或tag,现在我尝试做的是获取位置,并将其与鼠标位置进行比较,得到离鼠标最近的物体,并带有标签(“项目”),很高兴你接受了我的答案!我希望你的游戏进行得很好,你能跟上编码的步伐。问候你,SB