• Unity NavMesh导航网格 初级教程


      目的:要实现的功能就是你点击一下地图上的某个地方,人物就向着那个点移动。有点自动寻路的味道。

       例子:三国群英传,三国赵云传之类的游戏里面的人物移动就可以用这个实现。还有一个我不太喜欢玩的游戏英雄联盟也是可以这样实现的。

       怎么做:  先新建一些东西。如图:

      

    这个Player我是建了一个椭圆体来用的。建好之后就开始跟着我做吧。

      一、打开Navigation

      

      二、为地图添加Navigation Static

    选中plane,勾选Navigation Static,现在可以看到Navigation Layer默认的是Default,修改一下换成Walkable。如果没有Walkable去Layers里面自己手动添加。然后在右下角Bake一下。

      三、为Player添加NavMeshAgent组件,为其新建一个MoveToClickPoint脚本并添加,为其添加刚体组件。

    脚本内容如下:

     1 using UnityEngine;
     2 
     3 public class MoveToClickPoint : MonoBehaviour {
     4 
     5     NavMeshAgent Agent;
     6     // Use this for initialization
     7     void Start () 
     8     {
     9         Agent=GetComponent<NavMeshAgent>();
    10     
    11     }
    12     
    13     // Update is called once per frame
    14     void Update ()
    15     {
    16         if (Input.GetMouseButtonDown(0))
    17         {
    18             RaycastHit hit;
    19             if (Physics.Raycast(Camera.main.ScreenPointToRay(Input.mousePosition),out hit,100))
    20             {
    21                 Agent.destination = hit.point;    //Agent目的地为点击的那个点
    22             }
    23         }
    24     
    25     }
    26 }

     一切完成之后运行,你会发现你点击某个地方,Player就会移动到某个地方。但是!注意到我的那个红色的cube了吗?红色的cube我的意图是让他成为障碍物。但是你点击后发现Player根本过不去。好了,现在来跟我做最后一步:

      四、为障碍物添加Navigation Static,将其Navigation Layer换成Not Walkable.最后bake一下。

    现在来运行试试效果吧

  • 相关阅读:
    CentOS7安装redis
    apache修改最大连接数报错
    阿里云服务器安全组设置
    CentOS7为firewalld添加开放端口
    php程序报错:PHP Core Warning/cannot open shared object file: No such file or directory
    centos7配置Apache支持HTTPS
    linux系统下Apache日志分割(按天生成文件)
    springboot 项目依赖 es包版本异常
    jboss Marshalling, 服务端收不到消息
    gateway 整合 websocket demo
  • 原文地址:https://www.cnblogs.com/yunquan/p/4861245.html
Copyright © 2020-2023  润新知