You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Unity 2D游戏绳索脚本问题:射线未检测到目标对象

2D游戏射线检测未命中Hook对象的解决方案
  • 改用2D专用射线检测API
    你当前用的Physics.Raycast是3D物理系统的接口,2D游戏必须用Physics2D.Raycast,同时要把RaycastHit换成RaycastHit2D,适配2D物理环境。

  • 修正射线方向为指向鼠标位置
    你现在用transform.forward作为射线方向,这是3D空间的前后轴方向,在2D正交相机下完全不符合需求。正确做法是计算发射点到鼠标世界坐标的方向:

    // 获取鼠标在世界空间的位置,统一Z轴避免深度偏差
    Vector3 mouseWorldPos = Camera.main.ScreenToWorldPoint(Input.mousePosition);
    mouseWorldPos.z = transform.position.z;
    // 计算归一化的射线方向
    Vector2 rayDirection = (mouseWorldPos - transform.position).normalized;
    
  • 检查Hook对象的碰撞器设置

    • 给Hook添加2D碰撞器(比如BoxCollider2D/CircleCollider2D),不能用3D碰撞器
    • 不要勾选碰撞器的Is Trigger(触发模式下常规射线检测不会命中)
    • 调整碰撞器大小和位置,确保完全覆盖Hook的可视区域
  • 替换完整的射线检测逻辑
    修正后的核心代码示例:

    void Update()
    {
        if (Button.nuberPerson == 2 && Cursorrender.cursRopeMode)
        {
            Vector3 mouseWorldPos = Camera.main.ScreenToWorldPoint(Input.mousePosition);
            mouseWorldPos.z = transform.position.z;
            Vector2 rayDirection = (mouseWorldPos - transform.position).normalized;
            // 2D模式下的调试画线
            Debug.DrawRay(transform.position, rayDirection * 100, Color.red);
    
            if (Input.GetMouseButtonUp(0))
            {
                Debug.Log("CLICK");
                // 执行2D射线检测,最大距离设为200
                RaycastHit2D hit = Physics2D.Raycast(transform.position, rayDirection, 200f);
                if (hit)
                {
                    Debug.Log($"HIT: {hit.collider.gameObject.name}");
                    if (hit.collider.gameObject == _hook)
                    {
                        Debug.Log("INSTANTIATE");
                        Instantiate(_unitRopePref, hit.transform);
                    }
                }
            }
        }
    }
    
  • 额外排查项

    • 确认场景相机是正交相机(2D游戏标准配置),透视相机的鼠标坐标转换逻辑不同
    • 检查层级过滤:如果Hook在自定义层级,需在Physics2D.Raycast参数中指定该层级,比如Physics2D.Raycast(..., LayerMask.GetMask("Hook"))
    • 确认脚本挂载的对象是正确的射线发射源(比如玩家角色),避免发射点位置错误

内容的提问来源于stack exchange,提问作者be3_GMO

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.17 20:05:00