Microcity--一个简单判断实现3D超车仿真

受到物流仿真系统课程学习中时间推进法的启发,通过一个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

效果演示:

由以上两个基本条件判断即可实现简易的超车后回到原车道,其余状况两辆小车根据时间推进正常行驶和改变位置即可

  • 4
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值