unity3d - 为什么对象没有被破坏(光线投射)?
问题描述
我有一些 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);
}
解决方案
我认为这是因为当你说 Destroy(gameObject); 你指的是你当前的游戏对象(脚本附加到的那个)。另外,您应该使用标签 if(hit.collider.Comparetag("tagname") 而不是使用 hit.collider.name == "item"
推荐阅读
- php - 如何删除存档页面上的前 3 个帖子?
- excel - 将非结构化数据从 excel 工作表中获取到 1 个新文件中
- excel - VBA - 检查单元格值是否在列中
- libreoffice-writer - 导出对文档所做更改的选项或扩展
- reactjs - 为什么我的服务调用没有更新问题
- ios - NSPOSIXErrorDomain Code=57 "套接字未连接"
- tkinter - Tkinter 回调中的异常仅发生在批处理运行中,而不是在 Spyder 运行中
- python - Pandas 保存到多个小的 CSV 文件
- c++ - 在程序中存储配置变量(例如程序状态)的更好方法是什么?
- templates - 我试图向我的班级添加一个新的模板帮助函数,但现在我收到了 LNK2001 错误。怎么修?