导航网格寻路组件

文章介绍了Unity中的导航网格寻路组件NavMeshAgent,用于实现角色在复杂地形的自动寻路。通过A星算法计算路径,设置目标点,控制寻路与停止,并详细列举了相关参数如速度、加速度以及路径状态等。同时,提供了代码示例,展示如何进行手动寻路、设置新路径以及响应用户输入来调整角色移动。
摘要由CSDN通过智能技术生成

1、导航网格寻路组件

寻路组件的作用就是帮助角色可以在地形上准确的移动起来,本质就是根据烘焙出的寻路网格信息,通过基于A星寻路的算法计算出行进路径让我们在该路径上移动起来

2、参数相关

导航网格寻路组件——Nav Mesh Agent(导航网格代理人)

3、代码相关

//使用网格相关脚本需要引用命名空间
//UnityEngine.AI

#region 常用内容
//自动寻路设置目标点
//agent.SetDestination()

//停止寻路
//agent.isStopped = true;
#endregion

#region 不常用内容
#region 变量
//关键变量
//1.面板参数相关 速度 加速度 旋转速度等等
print(agent.speed);
print(agent.acceleration);
print(agent.angularSpeed);
//2.其它重要属性
//2-1当前是否有路径
if( agent.hasPath )
{

}
//2-2代理目标点 可以设置 也可以得到
print(agent.destination);

//2-3是否停止 可以得到也可以设置
print(agent.isStopped);

//2-4当前路径
print(agent.path);

//2-5路径是否在计算中
if( agent.pathPending )
{

}
//2-6路径状态
print(agent.pathStatus);

//2-7是否更新位置
agent.updatePosition = true;

//2-8是否更新角度
agent.updateRotation = true;

//2-9代理速度
print(agent.velocity);

#endregion

#region 方法
//手动寻路
//计算生成路径
NavMeshPath path = new NavMeshPath();
if( agent.CalculatePath(Vector3.zero, path) )
{

}
//设置新路径
if(agent.SetPath(path))
{

}
//清除路径
agent.ResetPath();

//调整到指定点位置
agent.Warp(Vector3.zero);
void Update()
{
    if( Input.GetMouseButtonDown(0) )
    {
        RaycastHit hit;
        if( Physics.Raycast(Camera.main.ScreenPointToRay(Input.mousePosition), out hit ) )
        {
            print(hit.collider.name);
            agent.isStopped = false;
            //让对象朝目标点移动 先生成行进路径 然后再移动
            agent.SetDestination(hit.point);
        }
    }

    if( Input.GetKeyDown(KeyCode.Space) )
    {
        agent.isStopped = true;
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值