Unity3D导航系统实例


Unity3D导航实例

使用脚本使胶囊体自动导航移动到目标位置,本次为demo实现过程

搭建场景

搭建场景

设置对象

设置场景中的对象

  1. 设置可以行走的对象
    在Hierarchy视图中,选中对象,然后打开Navigation总控制面板,打开Object选项卡,将Navigation Area设置为可以行走的对象(Walkable),如图:


  2. 设置网格分层
    在Navigation总控制面板中的Areas选项卡下,将User3的Name属性修改为Bridge1,将User4的Name属性修改为Bridge2,如图:


  3. 在Hierarchy视图中,分别选中Slope01和Slope02,然后在Navigation总控制面板中的Object选项卡下,将Navigation Area属性分别修改为Bridge1和Bridge2,如图:



  4. 设置地面可以跳跃
    在Hierarchy视图中选中需要跳跃经过的两个对象,然后再Navigation控制面板中的Object选项卡下勾选Generate OffMeshLink复选框,如图:


  5. 设置障碍物
    在Hierarchy视图中选中Wall01和Wall02,在Navigation控制面板中的Object下勾选Navigation Static复选框,然后将Navigation Area设置为Not Walkable,在对象的Inspector视图中添加Nav Mesh Obstacle障碍物组件,如图:



  6. 烘焙导航网格
    在Navigation总控制面板的Bake选项卡下,单机Bake烘焙导航网格,烘焙完成的网格如图:

  • 注意,如果没有烘焙出跳跃的路径,检查一下Bake选项卡下的跳跃距离是否设为0了

设置胶囊体

  1. 设置胶囊体
    在Hierarchy视图中添加3D对象Sphere,命名为Player
    为它添加Nav Mesh Agent组件
    为它添加脚本组件,命名为RunTest
    编辑RunTest脚本:
using UnityEngine;
using UnityEngine.AI;

public class RunTest : MonoBehaviour
{
    public Transform TargetObject;
    void Start()
    {
        GetComponent<NavMeshAgent>().SetDestination(TargetObject.position);
    }
}
  1. 设置目标点Target
    在Hierarchy视图中添加空对象,命名为Target
    将它的位置设置在要将胶囊体移动到的目标位置
    将它拖入到Player对象Runtest组件的TargetPosition选项,如图:

运行游戏

需要注意

  • 在Player的Nav Mesh Agent组件中的Area Mask属性,把需要的寻路层勾选后才会自动寻路

Unity3D导航系统介绍

https://www.cnblogs.com/su-make/p/Unity-Navigation-introduce.html

posted @ 2022-10-13 00:29  马林林林  阅读(459)  评论(0编辑  收藏  举报