自动寻径

来源:互联网 发布:博客源码那个好 编辑:程序博客网 时间:2024/05/02 18:50


      自动寻径:

    MMO - Massively Multiplayer Online,大型多人在线。


      策略类或战略类(MMOSLG


      动作类(MMOACT)。


      冒险类(MMOAVG)。


      模拟类游戏(MMOSG


      运动类(MMOSPT


      赛车类(MMORCG


      角色扮演类(MMORPG


    现在的大部分mmo游戏都有了自动寻路功能。点击场景上的一个位置,角色就会自动寻路过去。中间可能会有很多的障碍物,角色会自动绕过障碍物,最终达到终点。使用Unity来开发手游,自动寻路可以有很多种实现方式。


     下面简单介绍下navigation组件:

     


    这个Objcet的面板是对应当前选择的物体的,旁边的Bake面板是对应全局选项的。结构和烘焙或者遮挡剔除是一样的。


   上面的All、MeshRenderers、Terranis是对Hirarchy面板里面显示的物品选择的一个筛选过滤:


   1、 all:全部显示


   2、MeshRenderers:只显示可渲染的网格物体


   3、Terrains:只显示地形物体了。


   4、Navigation Static选项是选择该物体是否用做寻路功能的一部分。只有勾选了这个选项,下面的其他选项才会可操作。


   5、OffMeshLink Generation选项是选择该物体是否根据高度、可跳跃宽带等全局的选项自动生成OffMeshLink


   6、Navigation Layer是对参与寻路功能的地图物体的一个分类,用层来分类,默认有三个层可以选择,当然也可以自己添加层。

    

    寻路代码:

     private NavMeshAgent agent; //声明动寻路组件

    void Start() {

     agent = GetComponent<NavMeshAgent>();  //获取寻路组件

   }

    void Update() {

        RaycastHit hit;//射线触碰点

        if (Input.GetMouseButtonDown(0)) {

            Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);//声明一条射线,起点主摄像机,终点鼠标点击位置

            if (Physics.Raycast(ray, out hit))  {   //发出射线,射线触碰游戏对象,返回true

                agent.SetDestination(hit.point);  // 主人公向射线触屏点集合

            }

        }

  }


 

0 0
原创粉丝点击