zoukankan      html  css  js  c++  java
  • Unity3D中寻路Navmesh的简单介绍

    在游戏中经常会需要用到寻路,Asset Store里面有很多相关插件。这里介绍U3D自带的Navmesh。

    1.地形

    首先新建一个Plane当地表。

    然后在Plane上随意摆放些几何物体当作障碍物(注意预留能够让角色通过的路径)并给这些障碍物添加rigidbody。

     将这些障碍物同地表打组(把障碍物拖到Plane下为子物体),以方便接下来操作。

    选中Plane组,打开Navigation窗口,勾选Navigation Static,提示同时设置子物体,点确定。

    点击Navigation面板下的Bake,会提示保存场景,确定并保存。

    烘培完后如图(蓝色部分即为可以通过的路径):

    如果烘培出的路径不合理,可以调整障碍物后再烘培。

     将Plane及其子物体的tag设为Terrain。

    2.角色

    添加一个Capsule当角色。同样给它添加rigidbody组件。

    新建脚本CharacterController:

     1 public class PlayerController : MonoBehaviour
     2 {
     3 
     4     private NavMeshAgent agent;
     5 
     6     // Use this for initialization
     7     void Start ()
     8     {
     9         agent = GetComponent<NavMeshAgent>();
    10     }
    11     
    12     // Update is called once per frame
    13     void Update () {
    14 
    15         //鼠标点击场景设置目标点
    16         if (Input.GetMouseButtonDown(0))
    17         {
    18             Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
    19             RaycastHit hit;
    20             //如果点击目标点为地形
    21             if (Physics.Raycast(ray,out hit))
    22             {
    23                 if (!hit.collider.tag.Equals("Terrain"))
    24                 {
    25                     return;
    26                 }
    27 
    28                 Vector3 point = hit.point;
    29                 //角色转向
    30                 transform.LookAt(new Vector3(point.x,transform.position.y,point.z));
    31                 //设置目标点
    32                 agent.SetDestination(point);
    33             }
    34         }
    35 
    36         //正在行走,则输出提示
    37         if (agent.remainingDistance > 0)
    38         {
    39             Debug.Log("seeking");
    40         }
    41     }
    42 }
    View Code

    运行场景,点击目标点,看看是不是寻路成功。

  • 相关阅读:
    进程池Pool
    进程间通信-Queue
    多任务版udp聊天器
    列表循环放引用并写出打印结果
    协程实现tcp两个客户端的通讯
    正则匹配身份证和邮箱
    python中上双互斥锁的线程执行流程
    小巧的http live streaming m3u8播放器
    js实现@提到好友
    mongoose多级嵌套操作
  • 原文地址:https://www.cnblogs.com/seancheung/p/4028231.html
Copyright © 2011-2022 走看看