algorithm - 在道路上保持正确的车道
问题描述
我正在尝试为我的学士论文制作一个交通模拟器。
我创建了一张地图,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)
}
但是,我有一个问题,我不知道如何为每辆车保持正确的车道,我所有的车都在同一车道上。
我正在考虑两点之间的方向,汽车将在方向的右侧。但我不知道如何做到这一点......
谢谢!
解决方案
考虑到我们在评论中的对话,这是我更新您的运动和汽车代码的答案。
将变量添加到您的汽车类:
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;
}
推荐阅读
- python - Pygame 找不到想要的字体
- javascript - 通过 AJAX 响应更改图像的“src”属性
- ios - 跨开发人员的 iOS 存储
- javascript - Electron 不对本地 spring 服务器执行 https 调用,curl 有效
- c# - c#简单除法有消息框不显示的问题
- c - 编写 Makefile 以从 C 程序生成修改后的、汇编的、可重定位的和可执行的文件
- rest - RestTemplate 交换方法错误:ResourceAccessException:POST 请求上的 I/O 错误:连接超时
- platformio - 如何使用 platformio 生成地图文件
- c# - ASP.NET MVC - Html.Action 不呈现部分视图
- clang - 带有 --x86-asm-syntax=intel 的 Clang 和 llc 产生 AT&T 语法