【Unity3D日常开发】(二)自动寻路系统Navigation之实现自动寻路并且动态显示路线

举报
恬静的小魔龙 发表于 2021/10/14 09:16:16 2021/10/14
【摘要】 推荐阅读CSDN主页GitHub开源地址Unity3D插件分享简书地址我的个人博客QQ群:1040082875 一、前言今天实现,在Unity3d中实现点击目标点,然后出现引路线段,动态更新线段等功能。效果图如下图所示: 二、主要组件NavMeshAgent参数就不全部说明了,就说几个重要的吧Steering->Speed<1>这个是设置自动寻路的速度的,可以把这个值设置成0,然后就会光显示...

推荐阅读

一、前言

今天实现,在Unity3d中实现点击目标点,然后出现引路线段,动态更新线段等功能。

效果图如下图所示:

这里写图片描述

二、主要组件

NavMeshAgent
这里写图片描述

参数就不全部说明了,就说几个重要的吧
Steering->Speed
<1>这个是设置自动寻路的速度的,可以把这个值设置成0,然后就会光显示路线,而不自动寻路了。
<2>也可以随便设置一个值,然后就会显示路线,而且还会自动寻路

Steering->Stopping Distance
<1>这个的话就是寻路到目标点之后,距离目标点还有多少的距离,也就是停止距离
<2>如果目标点有碰撞体的话最后把这个值调大一点,不然会一直寻路,往这个方向挤

Path Finding->Area Mask
<1>可以行走的区域,这个再配合
这里写图片描述

这里写图片描述
这2个使用。先添加Areas层,然后在Object->Navgation Area->设置Areas层
<2>这个可以运用到dota游戏中,小兵自动3路寻路

LineRenderer组件

这个的话主要是用来在Game视图中画线段

这里写图片描述
首先要设置一下
LineRenderer->Materials
材质要设置一下,不然会显示材质丢失,就是那个紫色的一团

LineRenderer->Parameters->StartWidth
LineRenderer->Parameters->EndWidth
这两个是设置开始宽度和结束宽度。如果先要让线段粗一点可以设置值大一些

三、实现

代码:

using UnityEngine;
using System.Collections;

public class Nav : MonoBehaviour
{
    private NavMeshAgent agent;
    public Transform target;
    private LineRenderer lineRenderer;
    // Use this for initialization
    void Start()
    {
        agent = GetComponent<NavMeshAgent>();
        lineRenderer = gameObject.GetComponent<LineRenderer>();
    }

    // Update is called once per frame
    void Update()
    {
        //设置自动寻路的目标点
        agent.SetDestination(target.position);
        //储存自动寻路的点的坐标
        Vector3[] path = agent.path.corners;
        //线段整体y轴加1个单位
        for (int i = 0; i < path.Length; i++)
        {
            path[i] = path[i] + new Vector3(0, 1, 0);
        }
        //设置定点的数量
        lineRenderer.SetVertexCount(path.Length);
        for (int i = 0; i < path.Length; i++)
        {
            //设置线段的路劲
            lineRenderer.SetPosition(i, path[i]);
        }
    }
}

需要现在场景中烘培出来路径,然后在对象上加上NavMeshAgent组件和LineRenderer组件
这里写图片描述

Agent Type

自动寻路的类型

Base Offset

基本偏移,碰撞几何体相对于实际几何体垂直的偏移

Speed

移动的速度,这个数值越大移动的速度越快

Angular Speed

转角的移动速度

Acceleration

加速度

Stopping Distance

停止的间隔,在离目标点多远的距离停下来的意思

Auto Braking

自动停止

Radius

自动寻路的半径,可以与实际物体半径不一致

Height

自动寻路的高度,可以与实际物体高度不一致

Quality

躲避的等级,等级越高躲避越好,相对于计算量也会大一些

Auto Traverse OffMesh

自动穿过OffMesh

Auto Repath

自动重复

Area Mask

就是当前对象可以通过的网格路径,这个是在Naviagtion中设置

四、Line Renderer组件

这里写图片描述

这个就介绍几个比较重要的属性吧
Materials
这个是设置线段的材质,这个不设置的话就会显示成紫色(就是材质丢失的状态)
Width
就是线段的宽度
Positions
这个就是设置线段的路径的

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。