Unity穿透射线法:解决鼠标射线检测被碰撞器遮挡的问题
在Unity中,如果鼠标射线检测被碰撞器遮挡,可以手动发射穿透射线,获取所有碰撞器,然后根据Tag筛选目标对象。
private void Update() { FollowCursor(); if (Input.GetMouseButtonDown(0)) // 鼠标左键点击 { // 将鼠标位置转换为世界坐标 Vector2 mousePosition = Camera.main.ScreenToWorldPoint(Input.mousePosition); // 使用 Physics2D.Raycast 检测鼠标位置 RaycastHit2D hit = Physics2D.Raycast(mousePosition, Vector2.zero); // 如果检测到碰撞器 if (hit.collider != null) { // 检查碰撞器的 Tag 是否为 "PutBox" if (hit.collider.CompareTag("PutBox")) { print("检测到 PutBox 碰撞器"); // 获取碰撞器所在的 GameObject 的 PutBox 组件 PutBox putBox = hit.collider.GetComponent<PutBox>(); if (putBox != null) { // 调用 OnPutClick,并传入 putBox 参数 HandManager.instance.OnPutClick(putBox); } else { print("碰撞的对象没有 PutBox 组件"); } } } } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了