Unity Navigation详解

本文详细介绍了Unity的Navigation功能,包括路径烘焙、NavMeshAgent组件的挂载、起点终点设置以及效果演示。通过键盘输入控制物体在烘焙好的路径上移动,展示了Unity3D中的自动寻路系统。
摘要由CSDN通过智能技术生成

Unity Navigation详解

前言

从事unity相关行业以来始终看不清自己的路该怎么走,到今天才明白不需要花时间去迷茫,只管努力莫问前程。从今天开始每天写一点小东西,记录与整理自己走过的路,也一边寻找自己的路。便从unity的自动寻路Navigation开始吧。

Navigation功能

(1)烘焙路径
选中地面物体与障碍物,选中物体Static,如下图所示:
在这里插入图片描述
下一步如下图步骤调出Navigation面板:
在这里插入图片描述
在Navigation面板中选择Bake选项,如无特殊参数要求可直接点击Bake按钮,进行对路径的烘焙,如下图所示:
在这里插入图片描述
路径烘焙完成之后如下图所示:
在这里插入图片描述
(2)寻路物体挂载NavMeshAgent组件
在这里插入图片描述

(3)设置起点与终点
需将起点放置于上一步烘焙的路径之上,可手动拖拽寻路物体;终点也需要在烘焙路径的范围之内。使用一个脚本对NavMeshAgent组件进行设置操作,可使用代码设置移动速度、遵循路径时的最大回转速度等值,简单的脚本如下:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.AI;
public class TestScript : MonoBehaviour
{
    NavMeshAgent agent;

    Vector3 right_pos;
    Vector3 left_pos;
    Vector3 forward_pos;
    float speed;
    void Start()
    {
        right_pos = new Vector3(3.5f,transform.localPosition.y,3.5f);
        forward_pos = new Vector3(0.5f,transform.localPosition.y,3.5f);
        left_pos = new Vector3(-4f,transform.localPosition.y,-3.5f);
        speed = 3f;
        agent = this.transform.GetComponent<NavMeshAgent>();
    }

    void Update()
    {
        if (Input.GetKeyDown(KeyCode.A))
        {
            //设置终点
            agent.SetDestination(left_pos);
            agent.speed = speed;
            Debug.Log("左");
        }
        else if (Input.GetKeyDown(KeyCode.W))
        {
            agent.SetDestination(forward_pos);
            agent.speed = speed;
            Debug.Log("前");
        }
        else if (Input.GetKeyDown(KeyCode.D))
        {
            agent.SetDestination(right_pos);
            agent.speed = speed;
            Debug.Log("右");
        }
    }
}

(4)效果演示
在这里插入图片描述

  • 2
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Unity NavigationUnity引擎中的一个功能,它允许开发者创建能够在游戏世界中导航的角色。通过使用Unity Navigation,开发者可以让角色具备理解他们需要爬楼梯到二楼或者跳过沟渠等能力。\[3\]在使用Unity Navigation时,可以采取一些方法来解决一些常见的问题。比如,当使用Nav导航网格自动移动时,有可能会遇到导航卡住不动的情况,这时可以使用SamplePosition方法来获取一个Nav网格无法到达的点的位置信息。\[1\]另外,还可以通过调整Agent Size与角色NavAgent组件相同的参数,并使用Nav Mesh Obstacle组件来创建障碍物,以便更好地控制导航行为。\[2\] #### 引用[.reference_title] - *1* *2* [UnityNavigation功能简要](https://blog.csdn.net/qq_45946883/article/details/118055574)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [Unity3D之Navigation导航系统学习及案例讲解(适合初学者)](https://blog.csdn.net/qq_35361471/article/details/79857501)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值