首页 > 解决方案 > 在道路上保持正确的车道

问题描述

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

我创建了一张地图,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) 
 }

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

我正在考虑两点之间的方向,汽车将在方向的右侧。但我不知道如何做到这一点......

谢谢!

在此处输入图像描述 在此处输入图像描述

标签: algorithmunity3dgeometry

解决方案


考虑到我们在评论中的对话,这是我更新您的运动和汽车代码的答案。

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

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

推荐阅读