gpt4 book ai didi

c# - unity NavMeshPath 改变和重新分配

转载 作者:行者123 更新时间:2023-11-30 12:45:47 26 4
gpt4 key购买 nike

我在 Unity 中有一个场景,我在其中使用 Unity 的导航功能来计算路径并使用 NavMeshAgent 来行走。我必须对路径稍作修改,然后将其重新分配给代理。

现在,Unity 文档清楚地说明 NavMeshAgent.path 可以实用地设置(不是只读的)。

参见此处:https://docs.unity3d.com/Documentation/ScriptReference/NavMeshAgent-path.html

因此可以创建一个新的 NavMeshPath 并将其分配给 NavMeshAgent

对我来说不幸的是,NavMeshPath 不允许您以任何方式分配 Vector3 数组,因为 corners 属性是 < em>只读。什么...

我需要一个解决方法。任何帮助表示赞赏!

感谢您的宝贵时间。

最佳答案

虽然您不能将一组新的 Vector3 分配给 NavMeshPath.corners,但您可以更改 NavMeshPath 的角。

因此,与其自己制作,不如让代理生成一条具有正确拐角数量的路径,然后根据需要更改这些拐角,然后您可以在 NavMeshAgent.SetPath 中使用该路径。

我用它来强制移动按正方形进行,而不是像它想要的那样平滑。

例子

Vector3 vHit = WhereWeWantToGo;
var vNavMeshPath = new NavMeshPath();
mAgent.CalculatePath(vHit, vNavMeshPath);

for(var vIndex = 0;vIndex < vNavMeshPath.corners.Length;vIndex++){
var vPoint = vNavMeshPath.corners[vIndex];
vPoint.x = ChangeValue(vPoint.x);
vPoint.y = ChangeValue(vPoint.y);
vPoint.z = ChangeValue(vPoint.z);
}

mAgent.SetPath(vNavMeshPath);

必须是 for 循环,不能是 foreach。

现在,为了能够生成具有不同数量角点的任意 NavMeshPaths。您可以使用具有一组点的单个代理创建一个视线之外的 NavMesh 区域,这些点将生成已知数量的角,然后您可以随心所欲地使用它们。

关键是您不能设置 corners 数组,但您可以随意使用其中已有的内容。

关于c# - unity NavMeshPath 改变和重新分配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22943063/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com