前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【Unity3D】自动寻路并且动态显示路线

【Unity3D】自动寻路并且动态显示路线

原创
作者头像
恬静的小魔龙
修改2020-03-11 10:18:09
3.1K0
修改2020-03-11 10:18:09
举报
文章被收录于专栏:Unity3DUnity3D

在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

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

代码

代码语言:txt
复制
using UnityEngine;

using System.Collections;



public class Nav : MonoBehaviou

{

    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组件

20180525100642443.png
20180525100642443.png

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 Render

20180525102221795.png
20180525102221795.png

这个就介绍几个比较重要的属性吧

Materials

这个是设置线段的材质,这个不设置的话就会显示成紫色(就是材质丢失的状态)

Width

就是线段的宽度

Positions

这个就是设置线段的路径的

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 主要用到组件:
    • NavMeshAgent
    • LineRenderer组件
    • 代码
    • Line Render
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档