受到物流仿真系统课程学习中时间推进法的启发,通过一个3D超车小实验希望有助于大家对时间推进法运用的理解。适用于Microcity网页版的学习
基础逻辑
我们从现实角度出发,非常容易理解的是,超车触发肯定是后车嫌前车跑得慢,因此在保证安全的前提下,变道加速,超过一定距离后回到原车道,回到原速行驶。因此实验中我们就根据这个逻辑,随时间推进主要来改编超车车辆位置即可,并且可以通过“超车安全距离(overtake_distance)”这一判断条件来设置超车的逻辑和回到原车道的逻辑
超车逻辑实现示例
-- 超车逻辑
if car2.pos > car1.pos - overtake_distance then
-- 准备超车
car2.speed = v_overtake
--更新快速车辆的y坐标
car2_x_pos = 10
car2.obj:setpos(car2_x_pos, 0, car2.pos)
end
if car2.pos > car1.pos then
car1.is_overtaken=true
end
回到原车道逻辑实现示例
-- 返回原车道逻辑
if car1.is_overtaken and car2.pos > car1.pos + return_distance then
-- 返回慢车道
car2.speed = v_fast
car2_x_pos = 0
car2.obj:setpos(car2_x_pos, 0, car2.pos)
car1.is_overtaken=false
end
效果演示:
由以上两个基本条件判断即可实现简易的超车后回到原车道,其余状况两辆小车根据时间推进正常行驶和改变位置即可