首页 > 解决方案 > 为什么对象没有被破坏(光线投射)?

问题描述

我有一些 2D 对象,我希望它们在鼠标悬停时消失,函数 OnMouseOver() 不能很好地工作,所以我尝试获取鼠标位置,然后检查 2D 对象是否与 raycast 碰撞,但我不知道为什么这不能正常工作,有时对象没有反应,有时多个对象被删除

  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);
        }

标签: unity3d

解决方案


我认为这是因为当你说 Destroy(gameObject); 你指的是你当前的游戏对象(脚本附加到的那个)。另外,您应该使用标签 if(hit.collider.Comparetag("tagname") 而不是使用 hit.collider.name == "item"


推荐阅读