美文网首页
VR开发 -- Navigation寻路

VR开发 -- Navigation寻路

作者: 李昀熹1112 | 来源:发表于2018-08-07 12:03 被阅读0次

一、什么是寻路?

寻路顾名思义就是:角色在到达指定地点的过程中遇到障碍物会自动避开并自行选取最短的路程进行移动。
大多数的游戏中都会有自动越过障碍物与自动寻路的功能,点击场景上的一个位置,角色就会自动寻路过去。中间可能会有很多的障碍物,角色会自动绕过障碍物,最终达到终点。

二、使用寻路的方法:

第一种比较传统的是使用A星寻路插件,它是一种比较传统的人工智能算法,在Unity还没有Navigation寻路系统的时候最常被使用的一种方法
第二种就是通过Unity自带的Navigation寻路系统,添加脚本控制角色的自动避让障碍物和寻路

自动避让障碍物

一、添加一块Plane地板和一个胶囊体 Capsule(作为角色Player),给胶囊体添加Character Controller角色控制器 , 在Mesh F的Mesh改为None后会发现,胶囊体变成了一个如鸟笼般的网格状物体,这便是角色控制器。

image.png

二、添加一块Cube拉升后变成一面墙体,我们要实现的功能就是点击对面的地面,胶囊体可以绕过墙到达指定地点

image.png

三、在Window中添加Navigation

image.png

四、给角色添加Nav Mesh Agent

image.png

五、将Plane和Cube的static勾选为两个Static

image.png

六、给角色(胶囊体)添加脚本控制移动

public class Movenine_Test : MonoBehaviour {

private NavMeshAgent agent;

void Start () {
    agent = transform.GetComponent<NavMeshAgent>();
}


void Update () {
    if (Input.GetMouseButtonDown(0))
    {
        Ray r = Camera.main.ScreenPointToRay(Input.mousePosition);
        RaycastHit hit;
        if (Physics.Raycast(r, out hit))
        {
            if (!hit.collider.name.Equals("Player"))
            {
                Vector3 p = hit.point;
                agent.SetDestination(p);
              }   
          }
      }
   }
}

七、给Cube和面板进行烘焙

image.png

八、给面板的tag更改为Player(因为在角色的脚本中判断了对象的.name.Equals是否为“Player”)

image.png
现在点击播放,这时就能实现物体在进行移动到达指定地点的途中遇到障碍物会自动避让了
3912807-019724bf2ff1694b.gif

自动寻路

在原有的基础上再复制一块Plane面板,将Bake下的Jump Distance和Drop height更改数值(根据制作的面板的距离自行更改)进行烘焙
(注意如果不是复制的Plane面板而是重新创建的话,需要注意新面板的Static、Tag是否为Player和是否勾选Object)


image.png
image.png
3912807-3a57f731dab7a2ae.gif

相关文章

  • VR开发 -- Navigation寻路

    一、什么是寻路? 寻路顾名思义就是:角色在到达指定地点的过程中遇到障碍物会自动避开并自行选取最短的路程进行移动。大...

  • VR开发 -- Navigation寻路

    一.什么是寻路? 寻路顾名思义就是:角色在到达指定地点的过程中遇到障碍物会自动避开并自行选取最短的路程进行移动。大...

  • VR开发实战之Navigation寻路

    一.什么是寻路? 寻路顾名思义就是:角色在到达指定地点的过程中遇到障碍物会自动避开并自行选取最短的路程进行移动。大...

  • 6.2 AI寻路 navigation - 听觉

    AI获取坐标参考 > 6.AI寻路navigation - 视觉

  • Navigation 分层寻路

    分层寻路 在我们的实际开发过程中,往往有很多复杂的情况,如船只能在水面上行驶,不能再陆地上行驶,这时我们就需要进行...

  • Navigation导航寻路

    NavMesh简介 unity 中使用Navigation作为解决方案。 寻路(驱动一个游戏物体移动到目标位置上)...

  • 寻路之Navigation

    在unity中,通常会使用导航网格(Navigation)做寻路,但有时也会对场景直接划分格子,并自己实现A*算法...

  • 听说过席慈慧老师,那你见过席老师的作品吗?

    他具有四年unity开发经验; 他是国内早期VR/AR开发人员,具备相当丰富的游戏开发经验; 他开发过VR/AR寻...

  • Unity之寻路navigation

    1.打开寻路设置窗口 Window -> Navigation 2. 建立地形,生成寻路网格 Create Pla...

  • 寻路blog Navigation Mesh

    http://www.cnblogs.com/yaukey/p/rts_unit_traverse_size_ba...

网友评论

      本文标题:VR开发 -- Navigation寻路

      本文链接:https://www.haomeiwen.com/subject/kuvfbxtx.html