保持正确的行车路线

时间:2018-07-27 10:21:16

标签: algorithm unity3d geometry

我正在尝试为我的学士论文做一个交通模拟器。

我用OpenStreetMap osm创建了一张地图,现在我试图在道路上放一些汽车。 我为道路创建了图形。该图是这样的:

A->B,C,D
C->A,B,E
B->A,C
D->A
E->C

,然后我在随机点A,B,C,D,E,F上随机生成汽车。之后,我使用函数getShortestPath(start,end)获取每辆汽车的最短路径,然后我将汽车移动:

foreach(Car c in allCars){ 
    Move(c,path) 
 }

但是,我有一个问题,我不知道如何为每辆车保持正确的车道,我所有的车都在同一条车道上。

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

谢谢!

enter image description here enter image description here

1 个答案:

答案 0 :(得分:0)

考虑到我们在评论中的谈话,这是我的答案,以更新您的行程和汽车代码。

向您的汽车类别添加变量:

Class Car {
   // your other variables
   Vector3 progressPosition;  // This will only be set to the from nodes position whenever you get a new path.
}

您的更新代码如下:

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;
}