【3D技术宅公社】XR数字艺术论坛  XR技术讨论 XR互动电影 定格动画

 找回密码
 立即注册

QQ登录

只需一步,快速开始

调查问卷
论坛即将给大家带来全新的技术服务,面向三围图形学、游戏、动画的全新服务论坛升级为UTF8版本后,中文用户名和用户密码中有中文的都无法登陆,请发邮件到324007255(at)QQ.com联系手动修改密码

3D技术论坛将以计算机图形学为核心,面向教育 推出国内的三维教育引擎该项目在持续研发当中,感谢大家的关注。

查看: 4667|回复: 3

[Navmesh寻路] [Unity自带Navigation简明入门教程1]创建一个可以自动寻路的场景

[复制链接]
发表于 2013-12-12 16:52:20 | 显示全部楼层 |阅读模式
最近接触到Navigation自动寻路,在网上查看了一些资料。这里做一下笔记:
Unity自带Navigation简明入门教程1
Unity自带Navigation简明入门教程2

Unity自带Navigation简明入门教程3
第一个目标:创建一个可以自动寻路的场景


Navmesh自动寻路非常的方便,一下介绍一下如何创建一个可以自动寻路的场景
1.创建简单场景:
首先创建一个地面,在地面上分别放两个物体,其中胶囊形状代表一个人,Box表示人最终要走到的目的地。
QQ图片20131212162803.jpg
接着选中胶囊,为胶囊增加一个 Component-->Navigation-->Nav Mesh Agent。
接下来选中地面,在属性面板中点开Static后面的三角下拉菜单,在Navigation static选项前打钩(我这里整个Static全选了)
QQ图片20131212163642.jpg

选中地面,运行菜单window-->Navigation打开自动寻路烘焙面板,首先看到的是Object面板
在这个面板Navigation static选项打钩,则下面的选项变为可用,这个地面是可行走的路径,因此Navigation Layer选择 default。
QQ图片20131212163408.jpg
直接点Back面板中的Back,由于现在的东西很少,运算速度很快,瞬间就烘焙完毕了,这样我们得到了如下的寻路路径
QQ图片20131212164742.jpg
为胶囊增加一个简单的脚本,这个脚本的意义就是让胶囊自己去寻找目标物体。
[mw_shl_code=csharp,true]using UnityEngine;
using System.Collections;
public class MoveToTaget : MonoBehaviour {
      public Transform target;
      private NavMeshAgent man;
        // Use this for initialization
        void Start () {
        man  = GetComponent<NavMeshAgent>();
        }
        
        // Update is called once per frame
        void Update () {
      man.SetDestination(target.position);
        }
}[/mw_shl_code]
将这个脚本拖到胶囊身上,然后将红色的盒子拖到变量Transform target上,这样胶囊就会自动寻路到红色的盒子。只要这一个脚本就足够了。运行程序,胶囊会向红色Box靠近。

2.增加障碍物
刚才创建的是空的场景,现在为场景增加一个障碍物。新创建一个Box,拉成长条,形成胶囊和盒子之间的一道障碍。
QQ图片20131212165841.jpg

选中障碍物,设置属性面板中点开Static后面的三角下拉菜单,在Navigation static选项前打钩。运行菜单window-->Navigation打开自动寻路烘焙面板,因为这个是障碍物,是不可以走的东西,所以在Object面板中选择Navigation Layer选择为Not Walkable。
然后进行烘焙,渲染完毕后,我们原来的寻路路径就变成了如下的样子(如果觉得寻路路径倒角范围太大了,可以修改Bake面板中Radius的值变小一些,那么寻路路径和障碍物之间的距离就不会这么大了):
QQ图片20131212170424.jpg
运行游戏,就可以看到胶囊绕过障碍物向红色的Box靠拢。
QQ图片20131212171234.jpg


解释一下,Nav Mesh Agent中的参数含义:

Radius
寻路的半径
Speed   
走向目的地的最大速度
Acceleration
行走的加速度
Angular Speed
最大的角速度
Stopping Distance
制动距离,当接近这个值的时候,会自动减速
Auto Traverse OffMesh Link
启用OffMesh Link自动导航
Auto Repath
自动重新寻路
Height  
自动寻路器的高度
Base offset
偏移量
Obstacle Avoidance Type
躲避障碍的寻路计算品质
Avoidance Priority
障碍物优先级(0-99),数字越小优先级越高
NavMesh Walkable
寻路的路径类型
发表于 2014-11-12 09:25:09 | 显示全部楼层
Console.ReadKey;````````顶一个,好东西必须顶
发表于 2014-12-14 22:45:58 | 显示全部楼层
感谢楼主分享
发表于 2016-6-23 22:17:02 | 显示全部楼层
感谢分享资源
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|3D数字艺术论坛 ( 沪ICP备14023054号 )

GMT+8, 2024-11-27 08:04

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表