ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

NavMeshAgent.SetDestination后不会自动寻路问题

2022-06-25 22:04:15  阅读:170  来源: 互联网

标签:navMeshAgent true enabled SetDestination Input NavMeshAgent 寻路


# 下面的代码是想实现点击鼠标左键,寻路到指定的位置;但是运行后,并不会寻路,而是立即打印了end

void Update()
{
    if (Input.GetMouseButtonUp(1))
    {
        _navMeshAgent.enabled = true;
        _navMeshAgent.SetDestination(_targetPos);
    }

    if (_navMeshAgent.enabled)
    {
        if (_navMeshAgent.remainingDistance <= 0)
        {
            Debug.Log($"end");
            _navMeshAgent.enabled = false;
        }
    }
}

 

# 经过各种排查之后,最终确定是SetDestination后,会先计算如何寻路,至少要到下一帧才进行真正的寻路,所以方法1是SetDestination后return等待一帧

void Update()
{
    if (Input.GetMouseButtonUp(1))
    {
        _navMeshAgent.enabled = true;
        _navMeshAgent.SetDestination(_targetPos);
        return;
    }

    if (_navMeshAgent.enabled)
    {
        if (_navMeshAgent.remainingDistance <= 0)
        {
            Debug.Log($"end");
            _navMeshAgent.enabled = false;
        }
    }
}

# 或者方法2判断下是否在计算寻路数据中

void Update()
{
    if (Input.GetMouseButtonUp(1))
    {
        _navMeshAgent.enabled = true
        _navMeshAgent.SetDestination(_targetPos)
    }

    if (_navMeshAgent.enabled && !_navMeshAgent.pathPending)
    {
        if (_navMeshAgent.remainingDistance <= 0)
        {
            Debug.Log($"end");
            _navMeshAgent.enabled = false;
        }
    }
}

 

标签:navMeshAgent,true,enabled,SetDestination,Input,NavMeshAgent,寻路
来源: https://www.cnblogs.com/sailJs/p/16412490.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有