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

Unity中如何让Line Renderer仅在合并网格的道路上绘制?

解决Line Renderer仅绘制在合并网格道路区域的方法
  • 拆分合并网格
    把合并的道路/街道网格导入Blender这类建模软件,通过相似材质、拓扑结构快速选中道路部分的面,分离后导出单独的道路网格替换原资产。给新的道路网格单独设置图层,Line Renderer绘制时只针对该图层的碰撞体检测。

  • 子碰撞体+图层掩码
    给合并网格里的道路部分单独添加子Mesh Collider,将这个碰撞体分配到专属的"Road"图层。在控制Line Renderer的代码里,用图层掩码限制检测范围:

    int roadLayerMask = 1 << LayerMask.NameToLayer("Road");
    RaycastHit hit;
    if (Physics.Raycast(origin, direction, out hit, Mathf.Infinity, roadLayerMask))
    {
        // 仅在道路碰撞体的命中位置绘制线段点
    }
    
  • 导航网格区域筛选
    重新烘焙导航网格时,给道路区域设置自定义导航区域(比如"RoadArea"),街道区域设为其他区域。在代码中通过NavMesh.SamplePosition校验每个路径点:

    NavMeshHit navHit;
    List<Vector3> validPoints = new List<Vector3>();
    foreach (Vector3 point in originalLinePoints)
    {
        if (NavMesh.SamplePosition(point, out navHit, 0.5f, NavMesh.GetAreaFromName("RoadArea")))
        {
            validPoints.Add(navHit.position);
        }
    }
    lineRenderer.SetPositions(validPoints.ToArray());
    
  • 纹理遮罩判断
    如果道路和街道用了不同纹理,将道路纹理设置为可读,在代码中把世界坐标转成UV坐标,采样纹理颜色对比道路特征色,只保留符合条件的点用于绘制。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 04:35:04