文章目录

  • 前言
  • 今天研究的内容:
    • CarBehavior
    • TrafficLightControl
  • 接下来的计划:

前言

研究一下Low Poly Epic City的CarBehavior和TrafficLight怎么做的。

今天研究的内容:

CarBehavior

首先,每个车辆都打上了"Car"标签,并且在前方放置一个触发器用于探测环境。

Low Poly Epic City使用在每个单元放置PathFinding,而我采用PathRequestManager为每个单元提供路径。

这里面部分功能与我的Unit脚本重合。比较好玩的是,它会获取前车的CarBehavior脚本,使用bool来表示其是否在红绿灯下,是否才车辆后面,是否正在移动。盲猜是给状态机用的。居然还定义了加速。

开始运行,会在Start中调用StartDriving。如果是随机目的地模式,选择随便一个Tile作为目的地。一共尝试tiles的总数次。
如果是检查点模式,将第一个检查点作为目的地。

然后会去调用寻路算法,拿到Path队列,找到第一个Path中离单位最近的点赋值给targetDrivePoint。如果是闭合路径,就将检查点翻转,因为检查点模式下一次调用StartDriving一定是所有检查点走完的时候。
如果寻路失败路径队列为空,是随机目的地模式就再次尝试,会尝试直到randomPathTries<=0。

FixedUpdate处理车辆移动,通过直接修改Position的方法。
还有两个小细节:

  • 同样是查看单位当前的与目标点的距离,但是会加上速度,速度越快精度可以越低。
  • 根据是否在车辆后面设置不同的速度,如果在车辆后面,速度不会超过前车。如果不在,会插值往车辆的最大加速,如果大于了路径最大速度则插值减速到路径最大速度。
    如果没有路径,速度设置为0,什么都不做。

    如果接近了目标点,会调用MoveToNextPoint来获取路径中的下一个目标点。首先查看path是否为最后一个path,如果是,是否为path中的最后一个位置,如果是,寻找下一个随机目的地或根据是否为闭环路径来决定是否往回再走。如果不是最后一个位置,再继续走。

    如果不是最后一个path,查看是否为最后一个pathPosition。如果是,切到下一个path,activepoint设置为1。从设置为1可以看出,程序无视了path的第一个点。

    OnTriggerEnter处理当车辆前面的触发器碰到东西的时候要怎么做。如果碰到红绿灯,红灯的情况下设置无法移动,并且给lightChange委托绑定StartMoving函数,变为绿灯时再次开始移动。挺高效的。
    有趣的是,会判断红绿灯与单位的角度,基本上是正前方的红绿灯才进行考虑。


火车道交叉点和红绿灯类似,当前方是其它车辆时,通过判断与其它车辆的角度来做决策。估计最后一个if处理当遇到可能相撞的情况时停车。

离开触发器时需要的一些处理。

TrafficLightControl

切换红绿灯状态,并改变材质。

每隔一段时间调用一次。

Crosswalk咱们不管,这里面重要的就是委托LightChange和isGreen。

接下来的计划:

接下来用自己的代码把功能做出来。


Low Poly Epic City的脚本研究日志(2)(2022.3.1)相关推荐

  1. Unity Asset Store精品Low Poly风格素材资源合集

    本文介绍Unity Asset Store里优质的Low Poly风格素材,会从人物.环境.动物和通用四个方面的素材分别进行介绍. 一:人物素材 本部分包含幻想类.城市类和Q版人物素材三个子类别. O ...

  2. 关注LoadRunner脚本回放日志中的Warning信息

    最近在与大家的讨论中发现了LoadRunner的很多问题,出于解决问题的出发点,我也就相关自己不理解的问题在Google中搜索了一番,并通过一些实例也去实际操作了一遍,发现很多问题确实并不是那么难解决 ...

  3. php 画low poly,用canvas 实现个图片三角化(LOW POLY)效果_javascript技巧

    之前无意中看到Ovilia 用threejs做了个LOW POLY,也就是图片平面三角化的效果,觉得很惊艳,然后就自己花了点时间尝试了一下. 我是没怎么用过threejs,所以就直接用canvas的2 ...

  4. Unity创建Low Poly地形(Unity Blender)

    成果 首先创建一个地形 再添加一个插件,代码在这Terrain2Obj 是从一个Youtuber那拷贝过来的,然后导出 导入Blender 添加Modify的displace,然后点New,再添加Cl ...

  5. Blender从头到尾创建低多边形角色学习教程 Low Poly Characters – Blender Bitesize Course

    从头到尾创建低多边形角色. 你会学到: Blender界面的基础. 基本建模技术. 如何遵循字符引用? 如何创造和塑造自己的角色(不同风格.发型和服装). 纹理字符. 索具和动画介绍(用于你的游戏引擎 ...

  6. 美术干货:用Blender绘制low poly风格的游戏角色

    "low poly"(低面建模)因其独特的美术风格和相对不错的性价比成为一些游戏的首选,不过作为一种普及范围不算很广的建模手法,其具体的操作流程可能还不为人熟知. 笔者找到了一份用 ...

  7. jstack 脚本 自动日志_GitLab从安装到全自动化备份一条龙

    原文地址[1]欢迎star 需求 1.在新服务器上安装并搭建好gitlab2.手动+自动将旧服务器上的gitlab备份3.手动+自动将gitlab备份包scp到新服务器上4.手动+自动恢复新服务器上的 ...

  8. netapp脚本保存日志_Shell脚本实战:日志关键字监控+自动告警

    原文转载于:https://os.51cto.com/art/202004/613630.htm 主要用于Linux服务器监控程序日志,如出现关键字异常则触发相应的动作或告警操作,通知到邮件联系人. ...

  9. ^_^直接用脚本分割日志,不用工具。

    ^_^直接用脚本分割日志,不用工具. cp access_log access_${yDay}.log > access_log if [ -f access_${x7Day}.log ]; t ...

最新文章

  1. Web 开发与设计之 Google 兵器谱
  2. mongodb 初学 意外 连接服务器异常(Connection refused)
  3. vba 指定列后插入列_如何用【VBA】快速批量提取多个工作表名称?
  4. django-model操作数据库(增删改查)
  5. 免费Opengrok-代码阅读工具:Kernel,Optee,ATF,Uboot...
  6. 基于城市交通监控大数据的行程时间估计
  7. php oauth 扩展,PHP扩展之Web服务(一)——OAuth
  8. 一辆车撞到一位女孩的各种拍摄手法
  9. 动态规划---01背包问题--Dp(详解附代码)
  10. linux下的raid及mdadm的命令详解
  11. Mac cmake命令不可用-bash: cmake: command not found
  12. javascript 阮一峰入门教程
  13. iOS蓝牙开发(一)蓝牙相关基础知识
  14. 曲线拐点快速寻找算法+C代码
  15. SAP License:SAP HR人力资源管理系统
  16. 原生js做一个简单的仿幻灯片放映
  17. cad转换器高版本转低版本怎么转?
  18. java中static什么意思_java中static什么意思
  19. 怎么用python画圆柱_python绘制圆柱体
  20. LeetCode部分习题解答记录-动态规划

热门文章

  1. Arduino控制WS2812灯带(灯环)
  2. TCP滑动窗口协议与流量控制
  3. 【C语言】exit(0)与exit(1)有什么区别
  4. 利用Python3四舍五入保留两位小数
  5. 会议管理系统怎么用好,这些细节你注意到了吗?
  6. 室内监控与室外监控有什么区别 如何选择合适的监控摄像机
  7. appserver安装教程
  8. 基于深度学习的肺部CT影像识别——采用U-net、3D CNN、cGAN实现肺结节的检测(二)
  9. 背包问题之多重背包基础写法
  10. 默认选中 input元素默认选中设置