NavMeshAgent无法在Y位置工作< 0

时间:2017-04-24 09:58:47

标签: unity3d unity5

我有一个水平,其水平大部分位于零高度,但有些区域向下倾斜到零以下。我有一个简单的脚本附加到一个对象,随机设置NavMeshAgent的目标。在零Y位置楼层上移动时,它可以正常工作,但是如果我将对象放置在关卡的较低部分,则不会,并且NavMeshAgent.SetDestination始终返回false。

这是关卡的涂鸦:

enter image description here

以下是代码:

void Start () {
    nav = GetComponent<NavMeshAgent>();
    StartCoroutine(Move());
}

IEnumerator Move()
{
    while (true)
    {
        Vector3 randomPoint = transform.position + new Vector3(Random.Range(0, roamRadius),
            transform.position.y, Random.Range(0, roamRadius));

        Debug.DrawLine(transform.position, randomPoint, Color.green, 0.5f);

        Debug.Log(nav.SetDestination(randomPoint));

        yield return new WaitForSeconds(changeDirectionSpeed + Random.Range(0, changeDirectionSpeedRandom));
    }

}

我尝试使用NavMesh.SamplePosition检查我的随机向量的最近位置;总是在上层发现一个位置,但从不在下层。

我已经使用各种设置将NavMesh烘焙到代理半径为0.1但没有效果。我确信在较低级别存在NavMesh并且代理被放置在它上面。

1 个答案:

答案 0 :(得分:0)

如果你使用transform.position.y,你的y位置将会在空中。

建议您从transform.position.y + 10f执行光线投射,命中点将是您的新目的地点