首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NavMesh刚体导航系统拐角处结巴

NavMesh刚体导航系统拐角处结巴
EN

Stack Overflow用户
提问于 2022-07-19 02:43:07
回答 1查看 108关注 0票数 0

问题

我使用Rigidbody和NavMesh创建了一个导航系统。有个探员想跟踪我。它有一个胶囊对撞机、一个脚本(见下文)、一个刚体和一个NavMeshAgent组件。它的工作方式是运行NavMesh计算,获取下一个移动位置的坐标,禁用NavMesh,并使用MovePosition()移动到那里。这个系统通常运行得很好,但是最近我遇到了一些问题。当探员在障碍物周围移动时,它会停在街角上。我相信这是因为我的代码,尤其是我的MovePosition()函数,但我不知道如何修复它。

https://vimeo.com/731216013

代码

代码语言:javascript
复制
using UnityEngine;
using UnityEngine.AI;

public class PlayerController : MonoBehaviour
{
    public Rigidbody rb;
    public float m_Speed = 3f;
    public Transform goal;
    public NavMeshAgent navMesh;
    public float maxSpeed = 5f;

    void FixedUpdate()
    {
        MoveToNextPosition();
    }

    void MoveToNextPosition()
    {
        navMesh.enabled = true;

        if (navMesh.isOnNavMesh)
        {
            NavMeshPath path = new NavMeshPath();
            if(navMesh.CalculatePath(goal.position, path))
            {
                navMesh.path = path;
            }
        }

        Vector3 pos = navMesh.steeringTarget;
        navMesh.enabled = false;


        //Store user input as a movement vector
        Vector3 distance = pos - transform.position;
        Vector3 direction = distance.normalized;
        float speed = rb.velocity.magnitude;

        Debug.Log(direction);
        
        rb.MovePosition(transform.position + direction * Time.deltaTime * m_Speed);
     
        
    }
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-07-19 04:07:13

我有一个很大的清单,什么问题可以与导航网,因此我张贴它作为一个答案:

打开您的导航面板,如果找不到或意外关闭了选项卡,请转到窗口> AI >导航。导航选项卡如下所示:

打开烘焙选项卡,并根据其尺寸设置代理的半径和高度。在底部,单击以展开高级选项。在这种情况下,有一个字段Min Region Area,增加值会增加navmesh代理无法移动的静态障碍物周围的区域。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73030551

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档