开启辅助访问
 找回密码
 注册帐号

扫一扫,访问微社区

开发者专栏

关注:1972

当前位置:游戏蛮牛 技术专区 开发者专栏

__________________________________________________________________________________
开发者干货区版块规则:

  1、文章必须是图文形式。(至少2幅图)
      2、文章字数必须保持在1500字节以上。(编辑器右下角有字数检查)
      3、本版块只支持在游戏蛮牛原创首发,不支持转载。
      4、本版块回复不得无意义,如:顶、呵呵、不错......【真的会扣分的哦】
      5、......
__________________________________________________________________________________
查看: 2295|回复: 21

[沐冉楠] Unity 专业 Navigation导航系统

[复制链接]  [移动端链接]
排名
1294
昨日变化
4

22

主题

142

帖子

1513

积分

Rank: 9Rank: 9Rank: 9

UID
114543
好友
6
蛮牛币
4055
威望
0
注册时间
2015-7-21
在线时间
465 小时
最后登录
2017-11-24

专栏作家

发表于 2017-1-10 16:57:37 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?注册帐号

x
本帖最后由 沐冉楠 于 2017-1-10 16:57 编辑

1.Navigation系统的使用原理

NavMesh(导航网格)是3D游戏世界中用于实现动态物体自动寻路的一
种技术,将游戏中复杂的结构组织关系简化为带有一定信息的网格,
在这些网格的基础上通过一系列的计算来实现自动寻路。

2.自动寻路:NavMesh创建与NavMeshAgent组件的添加

2.1搭建场景
场景搭建.png

2.2设置场景物体为导航静态 Navigation Static

导航添加

导航添加


2.3创建NavMesh
打开Navigation视图窗口Window -> Navigation调整参数
Radius
Height
StepHeight
点击“Bake”按钮,生成导航网格.


back.png

2.3添加NavMeshAgent
在场景中添加两个物体分别代表Player和target.
为Player添加NavMeshAgent组件

nav.png

再添加脚本NavMeshTest
[C#] 纯文本查看 复制代码
using UnityEngine;
using System.Collections;

public class NavMeshTest : MonoBehaviour {
   
   
    NavMeshAgent agent;
    public GameObject Target;
  
        void Start () {
          agent = GetComponent<NavMeshAgent>(); 
        
        }

    void Update()
    {
        agent.SetDestination(Target.transform.position);
    }
}

script.png

拖入Target,运行就可以寻路了.


3.分离路面的链接:Off Mesh Link的使用
3.1自动Off Mesh Link的创建
选择作为高台的Cube
在Navigation窗口的Object选项卡中
勾选OffMeshLink Generation ☑
将Bake选项卡参数Drop Height设为100
Player的Cube放置在高台上,把作
为Target的Cube放置在高台下。
高铁.png

这样player就能从高台跳下来了
3.2手动Off Mesh Link的实现
添加起始点终止点Start 和End,为起始点(start point)添加Off Mesh Link组件
offm.png


把起始点和结束点分别拖拽到 Start 和End属性栏中。
zidongoff.png
然后运行,观察效果
4.联通路面的分离:Navigation系统的分层烘焙方式
4.1NavMesh的分层烘焙
新建场景
xj.png

设置烘焙层
lay.png

修改Navigation的Object选项卡中
的Navigation Layer
进行烘焙
qiao4.png

在Player的Nav Mesh Agent组件的
NavMesh Walkable
中取消选项qiao3或qiao4,
xuanqiaosi.png

运行观察效果。



5.动态路面的实现:使用脚本完成动态路面寻路系统

为桥加脚本代码,控制桥的消失和出现。
并动态修改NaMeshAgent组件中的SetAreaCost属性来更

改物体的可行进区域。
[C#] 纯文本查看 复制代码
agent.SetAreaCost(NavMesh.GetAreaFromName("qiao3"), 4);


6.动态路障的实现:使用Navmesh Obstacle组件

为桥体添加Nav Mesh Obstacle组件
障碍.png

调整大小中心类型,就形象障碍物了.
咋去.png
运行观察效果

7.其他效果的实现

如果再结合动画效果
[C#] 纯文本查看 复制代码
using UnityEngine;
using System.Collections;

public class Aman : MonoBehaviour {
    public Animator animator;
    public GameObject poli;
   private NavMeshAgent agent;
    public GameObject obj;
  
        void Start () {
          agent = GetComponent<NavMeshAgent>(); 
        animator = GetComponent<Animator>();
        }
        
        void Update () {
      agent.SetDestination(obj .transform .position);
      agent.SetAreaCost(NavMesh.GetAreaFromName("qiao3"), 4);
        if (Input.GetKey(KeyCode.W))
        {
            poli.transform.Translate(transform .forward *Time .deltaTime *0.2f );
           animator.SetBool ("walk",true);
      
        }else
      
        {
            animator.SetBool("walk", false);
            
        }
        if (Input.GetKey(KeyCode.S))
        {
            poli.transform.Translate(transform.forward * Time.deltaTime * 0.4f);
            animator.SetFloat("Speed", 10f);
        }
        else
        {
            animator.SetFloat("Speed", 0f);
        }
        
        if (agent.remainingDistance <= 3)
        {
            animator.SetFloat("Speed", 0f);
        }
        else
        {
            animator.SetFloat("Speed", 10f);
        }
        }
 
}

可以实现很多效果,自己发挥吧.
还有,如果再导航范围内可以动态更改目标位置
比如点击更改目标位置
[C#] 纯文本查看 复制代码
using UnityEngine;
using System.Collections;

public class dndn : MonoBehaviour {

    RaycastHit hit;
    Ray ray;
    Vector3 dir;
    public GameObject obj;
    void Start () {
        
        }
        
        void Update () {
        if (Input .GetMouseButtonDown (0))
        {
            ray = Camera.main.ScreenPointToRay(Input.mousePosition);
            if (Physics .Raycast (ray ,out hit ))
            {
              dir = new Vector3(hit.point.x, hit.transform.position.y, hit.point.z);
                
                Debug.Log(dir);
                obj.transform.position = dir;
            }
        }
        
    
        }
}











本帖被以下淘专辑推荐:

  • · I Like|主题: 83, 订阅: 7

回复

使用道具 举报

3偶尔光临
234/300
排名
13505
昨日变化
9

2

主题

146

帖子

234

积分

Rank: 3Rank: 3Rank: 3

UID
198779
好友
0
蛮牛币
125
威望
0
注册时间
2017-1-4
在线时间
42 小时
最后登录
2017-7-21
发表于 2017-1-10 22:51:03 | 显示全部楼层
精致学习了哈

回复

使用道具 举报

3偶尔光临
229/300
排名
9575
昨日变化
3

1

主题

111

帖子

229

积分

Rank: 3Rank: 3Rank: 3

UID
195727
好友
0
蛮牛币
481
威望
0
注册时间
2016-12-23
在线时间
33 小时
最后登录
2017-6-18
发表于 2017-1-10 23:52:54 | 显示全部楼层
gkjjjjyyyyyyyyuuui

回复 支持 反对

使用道具 举报

5熟悉之中
690/1000
排名
2363
昨日变化
3

0

主题

21

帖子

690

积分

Rank: 5Rank: 5

UID
128872
好友
0
蛮牛币
2979
威望
0
注册时间
2015-11-14
在线时间
185 小时
最后登录
2017-11-16
发表于 2017-1-11 08:34:14 | 显示全部楼层
留爪!!有用!!前来学习,谢谢!!

回复 支持 反对

使用道具 举报

7日久生情
2587/5000
排名
184
昨日变化

2

主题

143

帖子

2587

积分

Rank: 7Rank: 7Rank: 7Rank: 7

UID
40098
好友
0
蛮牛币
13084
威望
0
注册时间
2014-8-15
在线时间
652 小时
最后登录
2017-8-31
QQ
发表于 2017-1-11 09:32:21 | 显示全部楼层
精致学习了哈

回复

使用道具 举报

5熟悉之中
966/1000
排名
3730
昨日变化
22

0

主题

480

帖子

966

积分

Rank: 5Rank: 5

UID
156480
好友
0
蛮牛币
1589
威望
0
注册时间
2016-7-12
在线时间
178 小时
最后登录
2017-11-24
发表于 2017-1-11 09:41:39 | 显示全部楼层
看完了 ,还不是有点不懂

回复 支持 反对

使用道具 举报

5熟悉之中
938/1000
排名
1877
昨日变化
5

0

主题

88

帖子

938

积分

Rank: 5Rank: 5

UID
130931
好友
1
蛮牛币
2820
威望
0
注册时间
2015-12-5
在线时间
264 小时
最后登录
2017-11-23
发表于 2017-1-11 09:44:22 | 显示全部楼层
习惯性留名~

回复

使用道具 举报

5熟悉之中
943/1000
排名
2430
昨日变化
2

9

主题

161

帖子

943

积分

Rank: 5Rank: 5

UID
174370
好友
1
蛮牛币
3408
威望
0
注册时间
2016-10-10
在线时间
299 小时
最后登录
2017-11-21

活力之星

QQ
发表于 2017-1-11 09:51:19 | 显示全部楼层
等我吃回来早饭,一定要学习一下。

回复 支持 反对

使用道具 举报

6蛮牛粉丝
1429/1500
排名
2363
昨日变化
8

20

主题

545

帖子

1429

积分

Rank: 6Rank: 6Rank: 6

UID
174225
好友
1
蛮牛币
72
威望
0
注册时间
2016-10-9
在线时间
380 小时
最后登录
2017-11-24
QQ
发表于 2017-1-11 10:16:40 | 显示全部楼层
学习学习

回复

使用道具 举报

3偶尔光临
154/300
排名
14470
昨日变化
12

0

主题

96

帖子

154

积分

Rank: 3Rank: 3Rank: 3

UID
129875
好友
0
蛮牛币
159
威望
0
注册时间
2015-11-24
在线时间
20 小时
最后登录
2017-10-19
发表于 2017-1-11 10:26:00 | 显示全部楼层
这专业个毛啊。很基本嘛。

回复 支持 反对

使用道具 举报

5熟悉之中
667/1000
排名
3540
昨日变化
2

1

主题

84

帖子

667

积分

Rank: 5Rank: 5

UID
148089
好友
0
蛮牛币
1315
威望
0
注册时间
2016-5-10
在线时间
252 小时
最后登录
2017-11-18
发表于 2017-1-11 10:35:29 | 显示全部楼层
学习学习

回复

使用道具 举报

5熟悉之中
644/1000
排名
4719
昨日变化
4

0

主题

190

帖子

644

积分

Rank: 5Rank: 5

UID
160770
好友
6
蛮牛币
450
威望
0
注册时间
2016-8-5
在线时间
217 小时
最后登录
2017-11-23
发表于 2017-1-11 10:55:08 | 显示全部楼层
学习了,感谢

回复

使用道具 举报

6蛮牛粉丝
1078/1500
排名
2319
昨日变化
10

13

主题

174

帖子

1078

积分

Rank: 6Rank: 6Rank: 6

UID
164305
好友
0
蛮牛币
1453
威望
0
注册时间
2016-8-29
在线时间
399 小时
最后登录
2017-11-24
发表于 2017-1-11 11:01:25 | 显示全部楼层
先收藏着,慢慢学习

回复 支持 反对

使用道具 举报

6蛮牛粉丝
1244/1500
排名
5308
昨日变化
6

2

主题

775

帖子

1244

积分

Rank: 6Rank: 6Rank: 6

UID
92518
好友
1
蛮牛币
2464
威望
0
注册时间
2015-4-15
在线时间
277 小时
最后登录
2017-4-6
发表于 2017-1-11 11:09:35 | 显示全部楼层
最喜欢这样的帖子了

回复 支持 反对

使用道具 举报

6蛮牛粉丝
1100/1500
排名
2226
昨日变化
2

8

主题

98

帖子

1100

积分

Rank: 6Rank: 6Rank: 6

UID
164216
好友
0
蛮牛币
3009
威望
0
注册时间
2016-8-25
在线时间
484 小时
最后登录
2017-11-1
发表于 2017-1-11 11:15:10 | 显示全部楼层
最近就在用寻路 很有帮助!感谢!

回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册帐号

本版积分规则

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