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

Unity中Debug.DrawRay射线不显示问题求助

Debug.DrawRay在2D场景中不显示的解决思路

核心问题原因

你使用的是Unity 2D物理系统,但代码中用了transform.forward——这个向量指向3D空间的Z轴方向,在2D正交视图下完全不可见,这是射线不显示的主要原因。

具体修复步骤

  • 替换为2D空间方向向量:根据攻击逻辑,改用2D平面内的方向,比如transform.right(水平向右)、transform.up(垂直向上),或者自定义Vector2(如new Vector2(0,1)表示向上)。
  • 匹配射线长度与Raycast参数:当前Debug.DrawRay仅用transform.forward作为方向,未乘以Raycast的1000f距离,导致射线长度仅1单位,即使方向正确也难以观察。建议用Debug.DrawLine更直观控制起点和终点:
    void FixedUpdate()
    {
        // 替换为你需要的2D方向
        Vector2 attackDirection = transform.right;
        float rayDistance = 1000f;
        
        RaycastHit2D hit = Physics2D.Raycast(transform.position, attackDirection, rayDistance);
        Debug.Log("Ray drawn");
        // 绘制从物体位置出发,长度为rayDistance的射线
        Debug.DrawLine(transform.position, transform.position + (Vector3)attackDirection * rayDistance, Color.blue, 50f);
    }
    
  • 检查Scene视图设置:
    1. 确保右上角的Gizmos按钮处于开启状态(Debug绘制的射线属于Gizmos范畴);
    2. 若需验证Z轴方向射线,可暂时切换到Scene视图的3D模式查看;
    3. 关闭正交模式下的Z轴裁剪,避免射线因Z轴位置被裁剪。
  • 调整绘制时机:FixedUpdate帧率与Scene视图刷新不同步,可将绘制代码移至Update()方法,提升视觉同步性。

额外排查点

  • 确认物体的transform.position不在场景可视区域外;
  • 尝试将射线颜色改为更鲜艳的颜色(如Color.red),避免与场景背景混淆。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 07:22:24