unity制作高精地图

  1. 打开unity,项目->新建->3D->创建
  2. 将autoware map tools导入unity
  3. 点击Add package from disk
  4. 接着选择MapToolbox-master文件夹中的package.json,工具包就会自动导入
  5. 在Window----Package Manager中找到Jobs----Version History----Updata更新,就能添加Autoware----AutowareADASMap工具包
  6. 把地图文件放到刚刚创建的/Assets文件夹;注意路径中不能有中文
  7. 然后将PCD地图文件拖到SampleScene中打开

  8. 点击y轴,然后点旁边的锁键来锁定视角
  9. 右键添加Autoware工具箱
  10. 命名高精度地图
  11. 添加白色线
  12. 绘制白线
  13. 每段线编号,进行平滑处理,先打断subdicision,方式为normal way,依次创建左右两条
  14. 创建行驶线,注意行驶线需要全部打碎
  15. 若要绘画其它曲线,可以用c代码绘制后,按着曲线添加,先创建game object
  16. 然后右侧添加组件代码如下
    using UnityEngine;
    using System.Collections.Generic;
    
    public class ADASGoSlicesLane : MonoBehaviour
    {
        public float radius = 10.0f;
        public int segments = 50;
        public Vector3 center = new Vector3(21, 0, 8); // 圆心坐标
        public List<LanePoint> lanePoints; // 存储路径点
    
        void OnDrawGizmos()
        {
            lanePoints = CreateLanePoints(center, radius, segments);
            DrawCircleGizmos(lanePoints);
        }
    
        private List<LanePoint> CreateLanePoints(Vector3 center, float radius, int segments)
        {
            List<LanePoint> points = new List<LanePoint>();
    
            for (int i = 0; i < segments; i++)
            {
                float angle = (float)i / segments * Mathf.PI * 2;
                float x = Mathf.Cos(angle) * radius + center.x;
                float z = Mathf.Sin(angle) * radius + center.z;
    
                // 计算每个点的前向方向
                Vector3 point = new Vector3(x, center.y, z);
                Vector3 pointDir = new Vector3(-Mathf.Sin(angle), 0, Mathf.Cos(angle));
    
                points.Add(new LanePoint(point, pointDir));
            }
    
            return points;
        }
    
        private void DrawCircleGizmos(List<LanePoint> lanePoints)
        {
            Gizmos.color = Color.red;
    
            // 绘制路径点之间的线条
            for (int i = 0; i < lanePoints.Count; i++)
            {
                Vector3 startPoint = lanePoints[i].position;
                Vector3 endPoint = lanePoints[(i + 1) % lanePoints.Count].position;
                Gizmos.DrawLine(startPoint, endPoint);
            }
    
            // 绘制每个路径点的方向矢量
            Gizmos.color = Color.green;
            foreach (var lanePoint in lanePoints)
            {
                Gizmos.DrawLine(lanePoint.position, lanePoint.position + lanePoint.direction);
            }
        }
    }
    
    public struct LanePoint
    {
        public Vector3 position;
        public Vector3 direction;
    
        public LanePoint(Vector3 pos, Vector3 dir)
        {
            position = pos;
            direction = dir;
        }
    }
    

  17. 添加停止线
  18. 保存,选择文件夹,删除高精度地图,导入保存数据,在保存,覆盖之前的线段序列号
  19. 参考来源

autoware~unity绘制高精度地图教程(实测)_autoware unity高清地图-CSDN博客

  • 7
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
Unity3D是一款强大的游戏开发引擎,可以用于制作各种类型的游戏,包括小地图。小地图可以帮助玩家在游戏中快速定位自己的位置,了解周围的环境和目标位置。下面是制作Unity3D小地图的步骤: 1.首先,需要创建一个小地图的背景图。可以使用2D图片或者3D模型作为地图的背景。根据游戏的需求选择合适的背景。 2.接下来,创建一个摄像机对象,并将其设置为渲染到一个RenderTexture上。RenderTexture是一个可以用于将某个摄像机渲染的图像输出到纹理的类。在这个RenderTexture上设置小地图的尺寸和位置。 3.将创建的摄像机对象添加到主摄像机上。这样可以实现将主摄像机的渲染图像投影到小地图的背景图上。 4.创建小地图上的角色或者目标的图标。可以使用2D图片或者3D模型作为图标,根据游戏需求选择合适的样式。 5.根据角色或者目标的位置,将图标放置在小地图的对应位置上。可以通过坐标转换等方式将世界坐标转换为小地图上的坐标。 6.在游戏进行中,更新小地图上的角色或者目标的位置。可以通过实时获取角色或者目标的位置信息,然后将图标移动到对应的位置。 7.可以在小地图上添加一些标记物,比如重要地点、敌人位置等。这样可以帮助玩家更好地了解游戏世界的结构和情况。 通过以上步骤,就可以制作出一个基本的Unity3D小地图。当然,在实际制作中还可以根据游戏的需求进行一些定制和优化,比如添加一些特效、增加互动功能等,以提升游戏体验。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值