Unity导航代理组件Nav Mesh Agent实现简单的自动寻路

概念

Nav Mesh导航网格

Nav Mesh导航网格是3D游戏中,用于实现动态物体自动寻路的技术

它将游戏场景中复杂的对象结构组织,简化为带有一定信息的网格。在这些网格的基础上,通过一系列的计算实现自动寻路

Unity能自动生成Nav Mesh导航网格

Nav Mesh Agent导航代理组件

Unity的Nav Mesh Agent是配合导航网格使用的导航代理组件

给物体添加导航代理组件后,物体会自动根据目标位置和导航网格,寻找合适的路线,沿着找到的路线移动到目标位置

生成导航网格

选中用于生成导航网格的物体

在Navigation视图中点击bake按钮生成导航网格

Nav Mesh Agent导航代理组件可设置的属性包括:

导航代理的尺寸

导航代理的运动属性

闪避、寻路等行为的属性

示例演示

搭建场景,实现绿色小球自动寻找小球

选中需要烘焙的物体,打开Navigation窗口(菜单栏Window——AI——Navigation),点击Bake进行烘焙,出现导航网格。下面是烘焙过后的场景

作为追踪者的绿色小球,勾选Navigation Static,然后添加Nav Mesh Agent组件(添加方法:1.Inspector最下方的Add Component。2.菜单栏Component——Navigation——Nav Mesh Agent)

最后给绿色小球挂个脚本,回到Unity点击运行即可看见绿色小球自动追踪到红色小球(不管红色小球在导航网格上如何移动都可以找到)

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.AI;

public class NavigationMove : MonoBehaviour
{
    NavMeshAgent agent;
    private GameObject Enemy;
    // Start is called before the first frame update
    void Start()
    {
        //获取自身Navigation组件
        agent = GetComponent<NavMeshAgent>();
        //获取小球
        Enemy = GameObject.Find("Enemy").gameObject;
    }
    // Update is called once per frame
    void Update()
    {
        //寻找红色小球
        agent.SetDestination(Enemy.transform.position + Vector3.up * 0.5f);
    }
}

  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

寒冷的晚风

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

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

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

打赏作者

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

抵扣说明:

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

余额充值