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

3G技术应用

1人已加入

描述

在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();
        lineRenderer = gameObject.GetComponent();
    }
 
    // 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]);
        }
    }
}

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分