Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Algorithm 在路上保持正确的车道_Algorithm_Unity3d_Geometry - Fatal编程技术网

Algorithm 在路上保持正确的车道

Algorithm 在路上保持正确的车道,algorithm,unity3d,geometry,Algorithm,Unity3d,Geometry,我想为我的学士学位论文做一个交通模拟器 我用OpenStreetMap osm创建了一张地图,现在我正试图把一些汽车放到路上。 我为道路创建了一个图表。图表如下所示: A->B,C,D C->A,B,E B->A,C D->A E->C void UpdateCarMethod() { car.car.progressPosition = Vector3.MoveTowards(car.car.progressPosition, car.path[car.

我想为我的学士学位论文做一个交通模拟器

我用OpenStreetMap osm创建了一张地图,现在我正试图把一些汽车放到路上。 我为道路创建了一个图表。图表如下所示:

A->B,C,D
C->A,B,E
B->A,C
D->A
E->C
void UpdateCarMethod()
{
    car.car.progressPosition = Vector3.MoveTowards(car.car.progressPosition, car.path[car.index].point + lane, Time.deltaTime * speed);
    car.car.transform.position = car.car.progressPosition + car.car.transform.right;
}
我在随机点A、B、C、D、E、F上随机生成汽车。之后,我使用函数
getShortestPath(start,end)
为每辆汽车获取最短路径,然后我让汽车移动:

foreach(Car c in allCars){ 
    Move(c,path) 
 }
但是,我有一个问题,我不知道如何为每辆车保持正确的车道,我所有的车都在同一条车道上

我在考虑两点之间的方向,汽车将位于方向的右侧。 但是我不知道怎么做

谢谢大家!


考虑到我们在评论中的对话,以下是我更新您的移动和车辆代码的答案

将变量添加到您的汽车类:

Class Car {
   // your other variables
   Vector3 progressPosition;  // This will only be set to the from nodes position whenever you get a new path.
}
您的更新代码如下所示:

A->B,C,D
C->A,B,E
B->A,C
D->A
E->C
void UpdateCarMethod()
{
    car.car.progressPosition = Vector3.MoveTowards(car.car.progressPosition, car.path[car.index].point + lane, Time.deltaTime * speed);
    car.car.transform.position = car.car.progressPosition + car.car.transform.right;
}

问题是你只考虑最短路径,但这个函数有逻辑计算汽车的方向吗?如果是,只需复制路径并指定方向,如果不是,您需要重新考虑“getShortestPath”算法在我的驾驶模拟器中,我有一个带有一系列路段对象(它们表示从一个十字路口到下一个十字路口的道路)的类道路网络每个路段都有一组车道对象,每个车道都有一组表示中心曲线的向量。每个车道有2个车道参考-
。当我计算最短路径时,我使用这些
from
to
引用,以便车辆始终在正确的道路一侧行驶。我忘记了-最近我创建了一个RoadConnection类,它有两个RoadLane引用-
from
to
,每个RoadLane都有两个RoadConnection对象。这是一个小改动,但代码现在看起来更好了。在我看来,解决这个问题的最简单方法是将
位置
包含在
from
to
中,我的“getShortestPath”算法从两点返回最佳路径。我不需要更多的从这个算法。比扬,你能解释一下你在想什么吗?@RãzvanZavalichi我会在我能抓到的地方看一下你的文件,然后我会更新我的答案。现在它工作了,但只是为了把车从a移到B。如果路径是a,B,C,D,车会停在B。我要确定车是否从a移到B的条件是:如果(car.car.transform.position==car.path[car.index].point+lane){if(car.index