Unity3d 自动寻路,以及在Game视图中显示线段

来源:互联网 发布:淘宝太坑视频妹子下载 编辑:程序博客网 时间:2024/06/03 14:10

在Unity3d中实现点击目标点,然后出现引路线段,动态更新线段等功能
这里写图片描述

主要用到组件:

这里写图片描述

参数就不全部说明了,就说几个重要的吧
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;        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]);        }    }}

代码比较简单,就不写注释了,哈哈

原创粉丝点击