Unity NavMesh & LineRenderer AI寻路及导航路径的绘制

简介: Unity NavMesh & LineRenderer AI寻路及导航路径的绘制

Nav Mesh是Unity中用于寻路行为的AI功能,下面简单介绍Nav Mesh的使用以及如何使用Line Renderer组件将寻路的路径通过如下方式绘制出来:

image.gif

首先需要将场景中属于寻路过程中的障碍物体做Navigation Static处理,在Inspector检视面板右上角的Static中:

image.gif

然后打开Navigation窗口进行烘焙,在Window/AI菜单中:

image.gif

点击Bake烘焙,在Scene场景窗口中进行预览,其中蓝色的区域即是寻路时可以行走的区域:

image.gif

image.gif

为示例中的机器人添加NavMesh Agent组件,该类中的SetDestination函数可以设置寻路的目标,传入一个坐标即可:

image.gif

usingUnityEngine;
usingUnityEngine.AI;
publicclassFoo : MonoBehaviour{
privateNavMeshAgentagent;
    [SerializeField] privateTransformtarget;
privatevoidStart()
    {
agent=GetComponent<NavMeshAgent>();
    }
privatevoidUpdate()
    {
agent.SetDestination(target.position);
    }
}

image.gif

image.gif

下面绘制寻路的路径,为机器人创建一个子物体并添加Line Renderer组件,路径不需要面向视图方向,因此Alignment模式设为TransformZ,同时将Texture Mode设为Tile:

image.gif

usingUnityEngine;
usingUnityEngine.AI;
publicclassFoo : MonoBehaviour{
privateNavMeshAgentagent;
privateLineRendererlineRenderer;
    [SerializeField] privateTransformtarget;
privatevoidStart()
    {
agent=GetComponent<NavMeshAgent>();
lineRenderer=GetComponentInChildren<LineRenderer>();
    }
privatevoidUpdate()
    {
agent.SetDestination(target.position);
varcorners=agent.path.corners;
lineRenderer.SetPositions(corners);
    }
}

image.gif

image.gif

创建一个Shader,为LineRenderer添加Material材质球:

Shader "Custom/Arrow"
{
    Properties
    {
        _MainTex ("Texture", 2D) = "white" {}
        _MSpeed("MoveSpeed", Range(1, 3)) = 2 //移动速度
    }
    SubShader
    {
        //贴图带透明通道 ,半透明效果设置如下:
        tags{"Queue" = "Transparent" "RenderType" = "Transparent" "IgnoreProjector" = "True"}
        LOD 100
        Blend  SrcAlpha OneMinusSrcAlpha           //Blend选值为: SrcAlpha 和1-SrcAlpha  //也可测试为 DstColor SrcColor    //one one    
        Pass
        {
            Name "Simple"
            Cull off //双面
            CGPROGRAM
            #pragma vertex vert
            #pragma fragment frag
            // make fog work
            #pragma multi_compile_fog
            #include "UnityCG.cginc"
            struct appdata
            {
                float4 vertex : POSITION;
                float2 uv : TEXCOORD0;
            };
            struct v2f
            {
                float2 uv : TEXCOORD0;
                UNITY_FOG_COORDS(1)
                float4 vertex : SV_POSITION;
            };
            sampler2D _MainTex;
            float4 _MainTex_ST;
            float _MSpeed;
            v2f vert (appdata v)
            {
                v2f o;
                o.vertex = UnityObjectToClipPos(v.vertex);
                o.uv = TRANSFORM_TEX(v.uv, _MainTex);
                UNITY_TRANSFER_FOG(o,o.vertex);
                return o;
            }
            half4 frag(v2f i) : SV_Target
            {
                float2 uv = float2(i.uv.x - _MSpeed * _Time.y,i.uv.y); //箭头移动的计算
                // sample the texture
                fixed4 col = tex2D(_MainTex, uv);
                // apply fog
                UNITY_APPLY_FOG(i.fogCoord, col);
                return col;
            }
            ENDCG
        }
    }
}

image.gif

用到的贴图资源:

image.gif

image.gif

最终效果:

image.gif

目录
相关文章
|
26天前
|
人工智能 自然语言处理 语音技术
AI 工具导航网站分享
一个致力于成为您在 AI 世界探索旅程中的可靠伙伴,为您搭建起一座通往便捷与高效的桥梁的网站。
AI 工具导航网站分享
|
3天前
|
人工智能 IDE 程序员
从 AI Coding 演进路径看通义灵码 AI 程序员的发布,让更多 idea 变成产品
通义灵码 2.0 不仅正式发布 AI 程序员,还升级了很多基础能力,使用场景多样。繁星计划的推出更为大学生提供了免费的智能编码助手,助力科技创新。让不具备编码能力的人也可以将 idea 变成产品,帮助到更多开发者和泛开发者。
|
1月前
|
机器学习/深度学习 人工智能 安全
CCF-CV企业交流会:打造大模型时代的可信AI,探索AI安全治理新路径
近日,由中国计算机学会计算机视觉专委会主办的《打造大模型时代的可信AI》论坛顺利举行。论坛邀请了来自上海交通大学、中国科学技术大学等机构的专家,从立法、监管、前沿研究等多角度探讨AI安全治理。合合信息等企业展示了图像篡改检测等技术,助力AI向善发展。
65 11
CCF-CV企业交流会:打造大模型时代的可信AI,探索AI安全治理新路径
|
3天前
|
机器学习/深度学习 人工智能 算法
现身说法,AI小白的大模型学习路径
写这篇文章的初衷:作为一个AI小白,把我自己学习大模型的学习路径还原出来,包括理解的逻辑、看到的比较好的学习材料,通过一篇文章给串起来,对大模型建立起一个相对体系化的认知,才能够在扑面而来的大模型时代,看出点门道。
|
2月前
|
机器学习/深度学习 人工智能 自然语言处理
AI驱动的个性化学习路径优化
在当前教育领域,个性化学习正逐渐成为一种趋势。本文探讨了如何利用人工智能技术来优化个性化学习路径,提高学习效率和质量。通过分析学生的学习行为、偏好和表现,AI可以动态调整学习内容和难度,实现真正的因材施教。文章还讨论了实施这种技术所面临的挑战和潜在的解决方案。
118 7
|
5月前
|
图形学 C++
小功能⭐️Unity快捷键、路径及常用特性
小功能⭐️Unity快捷键、路径及常用特性
|
2月前
|
存储 人工智能 SEO
全开源免费AI网址导航网站源码
Aigotools 可以帮助用户快速创建和管理导航站点,内置站点管理和自动收录功能,同时提供国际化、SEO、多种图片存储方案。让用户可以快速部署上线自己的导航站。
359 1
|
3月前
|
SQL 存储 人工智能
OceanBase CTO杨传辉谈AI时代下数据库技术的创新演进路径!
在「DATA+AI」见解论坛上,OceanBase CTO杨传辉先生分享了AI与数据库技术融合的最新进展。他探讨了AI如何助力数据库技术演进,并介绍了OceanBase一体化数据库的创新。OceanBase通过单机分布式一体化架构,实现了从小规模到大规模的无缝扩展,具备高可用性和高效的数据处理能力。此外,OceanBase还实现了交易处理、分析和AI的一体化,大幅提升了系统的灵活性和性能。杨传辉强调,OceanBase的目标是成为一套能满足80%工作负载需求的系统,推动AI技术在各行各业的广泛应用。关注我们,深入了解AI与大数据的未来!
OceanBase CTO杨传辉谈AI时代下数据库技术的创新演进路径!
|
5月前
|
人工智能 自然语言处理 搜索推荐
AI战略丨生成式人工智能应用场景与落地路径
GenAI 的应用落地是一项系统性工程,离不开战略、业务、技术、组织等多维度的统筹和推动。
|
5月前
|
开发者 图形学 API
从零起步,深度揭秘:运用Unity引擎及网络编程技术,一步步搭建属于你的实时多人在线对战游戏平台——详尽指南与实战代码解析,带你轻松掌握网络化游戏开发的核心要领与最佳实践路径
【8月更文挑战第31天】构建实时多人对战平台是技术与创意的结合。本文使用成熟的Unity游戏开发引擎,从零开始指导读者搭建简单的实时对战平台。内容涵盖网络架构设计、Unity网络API应用及客户端与服务器通信。首先,创建新项目并选择适合多人游戏的模板,使用推荐的网络传输层。接着,定义基本玩法,如2D多人射击游戏,创建角色预制件并添加Rigidbody2D组件。然后,引入网络身份组件以同步对象状态。通过示例代码展示玩家控制逻辑,包括移动和发射子弹功能。最后,设置服务器端逻辑,处理客户端连接和断开。本文帮助读者掌握构建Unity多人对战平台的核心知识,为进一步开发打下基础。
181 0

热门文章

最新文章