Unity之Navigation寻路功能

Unity之Navigation寻路功能

简介

本文是Unity的Navigation寻路功能实现简记。

场景布置

静态
一个Plane和三个Cube设置成地形,并将其设置成Navigation的静态模式;一个Capsule为移动对象,为其挂上组件NavMeshAgent,并挂自己编写的测试脚本NavigationTest(下面回复上具体代码);再建一个LineRenderer用于显示规划的路径,并将其托入NavigationTest脚本的对应属性中。
NavMeshAgent
场景:
场景

代码

using UnityEngine;
using UnityEngine.AI;

public class NavigationTest : MonoBehaviour
{
    public LineRenderer m_navPath;
    private NavMeshAgent aget;

    void Awake()
    {
        aget = GetComponent<NavMeshAgent>();
    }

    public void Update()
    {
        if (Input.GetMouseButtonDown(0))
        {
            Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
            RaycastHit hit;
            if (Physics.Raycast(ray, out hit, Mathf.Infinity))
            {
                aget.destination = hit.point;
            }
        }
        if (aget.hasPath)
        {//画路径线
            m_navPath.positionCount = aget.path.corners.Length;
            m_navPath.SetPositions(aget.path.corners);
        }
        else
        {
            m_navPath.positionCount = 0;
        }
    }
}

效果

效果

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: Unity NavigationUnity引擎中的一个功能模块,用于实现游戏中的动态寻路。它可以让游戏角色在复杂的地形中自动寻找最短路径,并避免障碍物。Unity Navigation使用了A*算法和导航网格来实现寻路功能。开发者可以通过设置导航网格的大小和分辨率来控制寻路的精度和性能。同时,Unity Navigation还提供了一些API和事件,方便开发者对寻路过程进行控制和处理。 ### 回答2: Unity Navigation 动态寻路是一种用于游戏开发的寻路算法,主要用于让游戏中的角色进行自动的寻路和移动。 在使用 Unity Navigation 动态寻路的时候,通常需要为游戏中的场景和角色建立一个导航图。导航图是一种用于描述场景的二维网格,其中包含了场景中的所有可行走区域和障碍物。导航图的建立通常需要依赖于场景建模软件和 Unity Navigation 工具。 一旦导航图建立完成,就可以通过 Unity Navigation 工具为游戏中的角色生成一个自动寻路的 AI。这个 AI 可以根据场景中的导航图来自动寻找到达目标的最短路径,并移动到目标位置。 在使用 Unity Navigation 动态寻路的过程中,还可以对寻路的参数进行调整,如搜索速度、起始点、寻路目标等。这可以帮助优化游戏中的自动寻路效果,使得角色能够更加高效地移动和执行任务。 总的来说,Unity Navigation 动态寻路是一种实用的寻路算法,在游戏开发中得到了广泛的应用。它可以使得游戏中的角色表现更加自然和逼真,提升游戏的体验和玩家的参与度。 ### 回答3: Unity Navigation是一个可以用于游戏中角色的寻路系统,Unity Navigation的动态寻路是指在游戏运行时,根据角色的移动和场景的变化,动态生成角色的寻路路径。 在使用Unity Navigation动态寻路时,需要先将场景中的导航网格生成器进行设置和布置。导航网格是指游戏场景中被划分成多个网格的区域,通过导航网格生成器对这些网格进行划分和连通,构建出可供角色行走的寻路路径。设置完成后,可以通过代码对生成的导航网格进行修改,包括增加、删除、移动网格等。 当场景中的物体发生移动和场景发生变化时,导航网格需要进行重新计算,重新生成新的寻路路径。此时,可以通过使用Unity NavigationNavMeshLink组件,将已有路径和新生成的路径连接起来。NavMeshLink组件可以自动将两个不同寻路网格之间的路径连接起来,避免角色出现异常的跳跃行为。 在角色进行寻路时,需要使用Unity Navigation中的NavMeshAgent组件。NavMeshAgent组件是一个负责控制角色行走和跟踪路径的组件,可以通过代码设置角色的移动速度、加速度等属性。同时,NavMeshAgent组件还支持对角色进行避障和避免碰撞等特殊处理,确保角色在行走过程中不会出现卡住等异常情况。 总的来说,Unity Navigation动态寻路是一种可以让角色在游戏中自动寻找路径的技术,可以让游戏更加流畅和自然,提高游戏的可玩性和趣味性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

天富儿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值