Unity 使用Navgation自动寻路绘制导航路线_navmeshagent绘制路线-程序员宅基地

技术标签: unity  笔记  游戏引擎  

Unity 使用Navgation自动寻路绘制导航路线

一、烘焙平面路径

将所在平面和相应障碍物设置静态(Navgation static),
设置静态
调出Navgation面板
调出相应面板
烘焙路径
在这里插入图片描述

二、创建寻路对象,挂载组件

在这里插入图片描述

如果想单独查看去某个位置的路线,人物不走动,将NavMeshAgent的Speed参数设置为0就可以。(本文设置为0演示)

三、编写代码

将如下代码挂载至人物对象上

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.AI;

public class Player : MonoBehaviour
{
    
    private NavMeshAgent agent;
    private LineRenderer line;
    // Start is called before the first frame update
    void Start()
    {
    
        agent = transform.GetComponent<NavMeshAgent>();
        line = transform.GetComponent<LineRenderer>();
    }

    // Update is called once per frame
    void Update()
    {
    
        if (Input.GetMouseButtonDown(0))
        {
    
            Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
            RaycastHit hit;
            if (Physics.Raycast(ray, out hit, 500))
            {
    
                if (hit.transform.tag == "plane")
                {
    
                    agent.SetDestination(hit.point);
                }
            }

        }
        if (agent.path.corners.Length > 1)
        {
    
            line.positionCount = agent.path.corners.Length;
            line.SetPositions(agent.path.corners);
        }
    }
}

实现效果如下:
在这里插入图片描述

四、创建编写相应Shader,添加材质至路径

Shader代码如下:

Shader "Custom/line"
{
    
    Properties
    {
    
        MainTexture("Texture", 2D) = "white" {
    }
        MoveSpeed("MoveSpeed", Range(0, 3)) = 1 
    }
        SubShader
        {
    
            tags{
    "Queue" = "Transparent" "RenderType" = "Transparent" "IgnoreProjector" = "True"}
            LOD 100
            Blend  SrcAlpha OneMinusSrcAlpha   

            Pass
            {
    

                Name "Simple"
                Cull off 

                CGPROGRAM
                #pragma vertex vert
                #pragma fragment frag
            #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 MainTexture;
            float4 MainTexture_ST;
            float MoveSpeed;
            v2f vert(appdata v)
            {
    
                v2f o;
                o.vertex = UnityObjectToClipPos(v.vertex);
                o.uv = TRANSFORM_TEX(v.uv, MainTexture);
                UNITY_TRANSFER_FOG(o,o.vertex);
                return o;
            }

            half4 frag(v2f i) : SV_Target
            {
    
                float2 uv = float2(i.uv.x - MoveSpeed * _Time.y,i.uv.y); 
                fixed4 col = tex2D(MainTexture, uv);
                UNITY_APPLY_FOG(i.fogCoord, col);
                return col;
            }
            ENDCG
        }
        }
}

材质贴图:
在这里插入图片描述
在这里插入图片描述
设置参数:
在这里插入图片描述
实现效果:
在这里插入图片描述

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_43541308/article/details/132045038

智能推荐

统计平均分:从文本读取成绩并计算平均分,将平均分写入文本文件保存_包含学生考试成绩的源文本文件中提取并计算平均分-程序员宅基地

文章浏览阅读1.2k次。从文本读取成绩并计算平均分,将平均分写入文本文件保存。【学习的细节是欢悦的历程】Python官网Free:大咖免费“圣经”教程python 完全自学教程,不仅仅是基础那么简单……自学并不是什么神秘的东西,一个人一辈子自学的时间总是比在学校学习的时间长,没有老师的时候总是比有老师的时候多。——华罗庚HOT好文力荐从文本读取成绩并计算平均分统计平均分(将平均分写入文本文件保存)本文质量分:90目 录。_包含学生考试成绩的源文本文件中提取并计算平均分

[Intensive Reading]MOT:FairMOT_fairmot实现mot评估-程序员宅基地

文章浏览阅读2.1k次,点赞5次,收藏10次。简介《FairMOT:A Simple Baseline for Multi-Object Tracking》是一个online的多目标跟踪(MOT)算法,基于TBD(Traking-by-Detection)的策略,FairMOT主要就是基于JDE做的改进,可以简单的理解为,FairMOT是将JDE的YOLOv3的主干,改成了CenterNet,也就是将检测的方法由Anchor-base换成了Anchor-free,然后同样在已有检测模型上加了了embeeding分支,模型输出检测的结果和embeedi_fairmot实现mot评估

VS 2008 显示代码行数/改变程序格式风格_vs2008显示行数-程序员宅基地

文章浏览阅读3.9k次。VS 2008 显示代码行数:开发环境C#,其他类同操作。工具-》选项-》文本编辑器-》C#里的显示“行号”勾上即可。-------------------------------------------------------------------------------------------------------改变VS程序风格:java风格: private v_vs2008显示行数

Web前端设计全方位解析:面试题总结+答案详解_前端实现填空题-程序员宅基地

文章浏览阅读1.5k次,点赞21次,收藏29次。面试习题大总结,进来免费白嫖啦_前端实现填空题

0043期基于python的CNN训练识别吃的-含数据集-程序员宅基地

文章浏览阅读681次,点赞19次,收藏14次。083基于深度学习的手势识别小程序版本_含10多种模型包括alexnet、DenseNet、DLA、GoogleNet、Mobilenet、ResNet、ResNeXt、ShuffleNet、VGG、EfficientNet和Swin transformer等10多种模型。117nlp自然语言处理-文本情感分类-joy-sadness-anger-fear-love-surprise。运行02深度学习模型训练.py就会将txt文本中记录的训练集和验证集进行读取训练,训练好后会保存模型在本地。

如何使用 Workbench 远程连接到 MySQL 数据库 -MySQL Workbench 使用教程_mysql workbench连接数据库-程序员宅基地

文章浏览阅读1.5w次,点赞12次,收藏88次。MySQL Workbench 是一款专门为 MySQL 设计的可视化数据库 GUI 管理工具,我们可以在自己的计算机上,使用图形化界面(GUI)远程管理 MySQL 数据库。有关 MySQL 远程管理软件,你可以选择 Windows 下的 HeidiSQL,MacOS 下的 Sequel Ace 或者 MySQL 官方推出的跨平台客户端 MySQL Workbench 。如果你需要针对自己的工作流对数据库操作,定制开发,推荐一下卡拉云,详情见文末。本._mysql workbench连接数据库

随便推点

linux catalina.sh java_opts,Tomcat启动脚本catalina.sh---解读-程序员宅基地

文章浏览阅读1k次。原网址:http://blog.csdn.net/sun8288/article/details/78431271 - 概述脚本catalina.sh用于启动和关闭tomcat服务器,是最关键的脚本另外的脚本startup.sh和shutdown.sh都是使用不同的参数调用了该脚本该脚本的使用方法如下(引自该脚本本身):echo "Usage: catalina.sh ( commands ......_catalina.sh java_opts

【算法题】一种字符串压缩表示的解压(js)-程序员宅基地

文章浏览阅读100次。全部由小写英文字母组成,压缩后不会出现@,故输出不合法。两个d不需要压缩,故输入不合法。_一种字符串压缩表示的解压

matplotlib将figure转化为numpy的array矩阵格式_manager.canvas.figure转换成array-程序员宅基地

文章浏览阅读3.7k次,点赞3次,收藏10次。最近碰到一个问题,python读入视频,并处理每一张图片,并将处理的结果用quiver显示为矢量图,然后将矢量图转化为numpy数据。在这整个过程中碰到以下问题:1)怎么使用quiver,这个用起来有很多参数需要设置,没有MATLAB用起来方便,不过这个不是本博文的重点。2)怎么将矢量图的效果转化为numpy数据,这个我在百度上搜索了好多博文,但是都不是我想要的效果,当我科学上网时,发现matplotlib有官方的介绍,这里贴出链接3)成功的转化为numpy后,又发现我的数据又多了轴参数,致使整个_manager.canvas.figure转换成array

机器学习与数据挖掘-实验二_《机器学习与数据挖掘》实验二-程序员宅基地

文章浏览阅读1.1k次。1. 根据给定数据集(存放在data1.txt文件中,二分类数据),编码实现基于梯度下降的Logistic回归算法,画出决策边界;2. 从UCI中选择鸢尾花数据集(多分类数据),使用Sklearn实现Logistic回归;实现第一个决策边界的代码如下:(注意格式)import numpy as npimport pandas as pdimport matplotlib.pyplot as pltfrom sklearn import linear_modelfrom sklearn._《机器学习与数据挖掘》实验二

扔掉工具类,Mybatis 一个简单配置搞定数据加密解密!-程序员宅基地

文章浏览阅读185次。前言:介绍一个简单的MyBatis加解密方式,日常学习工作中提及这种方法的比较少,所以拿来说说,如果已经知道这种方法的忽略本文!一、背景在我们数据库中有些时候会保存一些用户的敏感信息,比如:手机号、银行卡等信息,如果这些信息以明文的方式保存,那么是不安全的。假如:黑客黑进了数据库,或者离职人员导出了数据,那么就可能导致这些敏感数据的泄漏。因此我们就需要找到一种方法来解决这个问题。二、解决方案由于我..._mybatis-flex 数据加解密

女生适不适合进入IT行业做Linux运维工程师?-程序员宅基地

文章浏览阅读2.4k次。 不知从何时起有那么一个不成文的理论:女生不适合做IT。在很多人看来,IT is a men’s world,女生学IT是件匪夷所思的事情。在传统的思维当中..._linux推不推荐入行

推荐文章

热门文章

相关标签