视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
unity3D自动寻路
2025-10-02 08:12:14 责编:小OO
文档
Unity3D的寻路功能

今天研究了下Unity3D的寻路功能,忽然发现Unity3D自带的寻路功能只支持付费版,内心不禁感到一阵失落。后来在宣雨松的博客上看到一篇关于ITween的文章,我发现这简直就是我等使用Unity免费版的福音啊,因为这个插件可以解决我们今天的寻路问题。压抑不住内心的激动,博主到ITween官网下载了这个插件,结合官方的例子,产生了ITween实现寻路功能的想法。具体说来,寻路功能就是为玩家或者游戏中的角色添加的一种AI,目的是在给定起点和终点后,程序可以帮助玩家或者游戏角色快速地找到最优的一条线路,复杂点的寻路系统可能还要考虑如何避开障碍物,那么好,现在我们开始一起走进寻路之旅!

      首先创建如图所示的游戏场景,在这里我们创建8个Cube来表示地面上的8个节点,我们按照一定的顺序排列这些节点,就能得到一条路线。这条路线就是我们为游戏体设计的路线。接下来,我们再创建一个Cube,赋予其黑色的材质,以示区别。

    

       接下来我们导入ITween 资源包文件,导入完成后,创建下面的脚本文件:

 

∙using UnityEngine; 

∙using System.Collections; 

∙public class ScriptControl : MonoBehaviour { 

∙    //节点数组 

∙    public Transform[] paths; 

∙    void Start () 

∙    { 

∙        Hashtable args = new Hashtable(); 

∙        //设置路径的点 

∙        args.Add("path",paths); 

∙        //设置类型为线性,线性效果会好一些。 

∙        args.Add("easeType", iTween.EaseType.linear); 

∙        //设置寻路的速度 

∙        args.Add("speed",8f); 

∙        //移动的整体时间。如果与speed共存那么优先speed 

∙        args.Add("time",5f); 

∙        //是否先从原始位置走到路径中第一个点的位置 

∙        args.Add("movetopath",true); 

∙        //延迟执行时间 

∙        args.Add("delay", 0.1f); 

∙        //移动的过程中面朝一个点 

∙        args.Add("looktarget",Vector3.zero); 

∙        //三个循环类型 none loop pingPong (一般 循环 来回) 

∙        args.Add("loopType", "loop"); 

∙        //是否让模型始终面朝当面目标的方向 

∙        //如果你发现你的模型在寻路的时候时钟都是一个方向那么一定要打开这个 

∙        args.Add("orienttopath",true); 

∙        //让模型开始寻路 

∙        iTween.MoveTo(gameObject,args); 

∙    } 

∙    void OnDrawGizmos() 

∙    { 

∙        //在scene视图中绘制出路径与线 

∙        iTween.DrawLine(paths,Color.yellow); 

∙        iTween.DrawPath(paths,Color.red); 

∙    } 

∙    void Update () 

∙    { 

∙    } 

∙}

       我们将该脚本绑定到我们的游戏体——黑色的Cube上,打开属性面板,编辑Paths属性,这时我们按照事先设计的路径节点顺序,将各节点拖放到下面的属性框中,这样就完成了对于路径节点的添加。文章来自【狗刨学习网

     这时我们运行游戏,将看到黑色的Cube沿着我们预先设计的路线进行运动:

        同时,我们能够注意到在游戏场景视图中,游戏体运动的路径被两种颜色的线标示了出来,这就是今天的内容啦,谢谢大家!

下载本文
显示全文
专题