我正在尝试为我的学士论文做一个交通模拟器。
我用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)
}
但是,我有一个问题,我不知道如何为每辆车保持正确的车道,我所有的车都在同一条车道上。
我正在考虑两点之间的方向,汽车将在该方向的右侧。 但是我不知道该怎么做。...
谢谢!
答案 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;
}