Low Poly Epic City的脚本研究日志(2)(2022.3.1)
文章目录
- 前言
- 今天研究的内容:
- 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)相关推荐
- Unity Asset Store精品Low Poly风格素材资源合集
本文介绍Unity Asset Store里优质的Low Poly风格素材,会从人物.环境.动物和通用四个方面的素材分别进行介绍. 一:人物素材 本部分包含幻想类.城市类和Q版人物素材三个子类别. O ...
- 关注LoadRunner脚本回放日志中的Warning信息
最近在与大家的讨论中发现了LoadRunner的很多问题,出于解决问题的出发点,我也就相关自己不理解的问题在Google中搜索了一番,并通过一些实例也去实际操作了一遍,发现很多问题确实并不是那么难解决 ...
- php 画low poly,用canvas 实现个图片三角化(LOW POLY)效果_javascript技巧
之前无意中看到Ovilia 用threejs做了个LOW POLY,也就是图片平面三角化的效果,觉得很惊艳,然后就自己花了点时间尝试了一下. 我是没怎么用过threejs,所以就直接用canvas的2 ...
- Unity创建Low Poly地形(Unity Blender)
成果 首先创建一个地形 再添加一个插件,代码在这Terrain2Obj 是从一个Youtuber那拷贝过来的,然后导出 导入Blender 添加Modify的displace,然后点New,再添加Cl ...
- Blender从头到尾创建低多边形角色学习教程 Low Poly Characters – Blender Bitesize Course
从头到尾创建低多边形角色. 你会学到: Blender界面的基础. 基本建模技术. 如何遵循字符引用? 如何创造和塑造自己的角色(不同风格.发型和服装). 纹理字符. 索具和动画介绍(用于你的游戏引擎 ...
- 美术干货:用Blender绘制low poly风格的游戏角色
"low poly"(低面建模)因其独特的美术风格和相对不错的性价比成为一些游戏的首选,不过作为一种普及范围不算很广的建模手法,其具体的操作流程可能还不为人熟知. 笔者找到了一份用 ...
- jstack 脚本 自动日志_GitLab从安装到全自动化备份一条龙
原文地址[1]欢迎star 需求 1.在新服务器上安装并搭建好gitlab2.手动+自动将旧服务器上的gitlab备份3.手动+自动将gitlab备份包scp到新服务器上4.手动+自动恢复新服务器上的 ...
- netapp脚本保存日志_Shell脚本实战:日志关键字监控+自动告警
原文转载于:https://os.51cto.com/art/202004/613630.htm 主要用于Linux服务器监控程序日志,如出现关键字异常则触发相应的动作或告警操作,通知到邮件联系人. ...
- ^_^直接用脚本分割日志,不用工具。
^_^直接用脚本分割日志,不用工具. cp access_log access_${yDay}.log > access_log if [ -f access_${x7Day}.log ]; t ...
最新文章
- Web 开发与设计之 Google 兵器谱
- mongodb 初学 意外 连接服务器异常(Connection refused)
- vba 指定列后插入列_如何用【VBA】快速批量提取多个工作表名称?
- django-model操作数据库(增删改查)
- 免费Opengrok-代码阅读工具:Kernel,Optee,ATF,Uboot...
- 基于城市交通监控大数据的行程时间估计
- php oauth 扩展,PHP扩展之Web服务(一)——OAuth
- 一辆车撞到一位女孩的各种拍摄手法
- 动态规划---01背包问题--Dp(详解附代码)
- linux下的raid及mdadm的命令详解
- Mac cmake命令不可用-bash: cmake: command not found
- javascript 阮一峰入门教程
- iOS蓝牙开发(一)蓝牙相关基础知识
- 曲线拐点快速寻找算法+C代码
- SAP License:SAP HR人力资源管理系统
- 原生js做一个简单的仿幻灯片放映
- cad转换器高版本转低版本怎么转?
- java中static什么意思_java中static什么意思
- 怎么用python画圆柱_python绘制圆柱体
- LeetCode部分习题解答记录-动态规划