我有一个水平,其水平大部分位于零高度,但有些区域向下倾斜到零以下。我有一个简单的脚本附加到一个对象,随机设置NavMeshAgent的目标。在零Y位置楼层上移动时,它可以正常工作,但是如果我将对象放置在关卡的较低部分,则不会,并且NavMeshAgent.SetDestination始终返回false。
这是关卡的涂鸦:
以下是代码:
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并且代理被放置在它上面。
答案 0 :(得分:0)
如果你使用transform.position.y,你的y位置将会在空中。
建议您从transform.position.y + 10f执行光线投射,命中点将是您的新目的地点