DrivingTestSimulation
Unity3D Project, subject two, simulated driving test
【更新信息】
-
更新时间-2021-1-17
- 解决了方向盘不同机型转动轴心偏离
-
更新时间-2021-2-18
- 加入了手刹系统
-
待更新-2021-6-19(工作太忙少有时间更新,先指出问题)- 解决了在REC回放下偶然出现的物体回放错位BUG(每一个挂ReplayEntity.cs的脚本都将被记录状态,且被记录的物体若为子物体那么应当记录的是localPosition,若所有的父子物体都记录世界坐标,在回放时可能将出现一些怪异的现象。
- 关于移动端滑动时视觉出现“闪移”的问题,滑动移动视觉的代码在TPD.cs与FED.cs中,其中有代码if(results[k].gameObject.tag == “camera_panel”),标签camera_panel是UI组件的标签,你应当限制这个组件只接收首次触摸点,其中camera_panel面板应当按照比例缩小,把锚点与自己的四个实心蓝点重合即可。
- 在回放时,应当取消掉被回放的物体上有可能控制物体变换组件的所有脚本。
- 单项练习的玩家生成点与项目位置似乎没有对接好,可手动调整生成点到合适的位置(场景:Exam Mode.unity)
【设置项目】
- 倒车入库(3步骤+时间限制210s+压线检测+中途停车检测)
- 侧方停车(2步骤+时间限制90s+压线检测+中途停车检测)
- 半坡起步(1步骤+时间限制30s+压线检测+中途停车检测)
- 直角转弯(2步骤+时间限制30s+压线检测+中途停车检测)
- 曲线行驶(1步骤+中途停车检测)
【功能设定】
- Home [主页]
- 考试模式(可回放)
- 自由练习
- 教程
- 退出游戏
- Choose [单项练习]
- 倒车入库(可回放)
- 侧方停车(可回放)
- 半坡起步(可回放)
- 直角转弯(可回放)
- 曲线行驶(可回放)
【未完善】
-
某些项目没有设置边界空气墙,玩家可以绕过项目到达终点:
- 若假设玩家遵守规则,那么这条可以忽略
-
“曲线行驶”没有设定压线检测
- 解决方案1:建两个S模型,在Unity里加碰撞器即可。
-
UI以及触屏视觉操作方面,建议使用第三方库,Unity商城
【关键代码】
说明:主要用于检测停车是否到位,你可以用此代码加入你自己的项目。
距离检测功能关键代码如下:
/*
参数p:检测轴基点(空物体)
参数axis:相对目标朝向轴,三个参数(Vector3.forward,Vector3.up,Vector3.right)
参数target:目标点(汽车)
返回值:返回距离差
*/
public float GetAxisDisValue(Transform p, Vector3 axis, Transform target)
{
//X轴度数基准向量
Vector3 a = p.TransformPoint(axis);
//库点朝向指定轴
Vector3 vecA = a - p.position;
//库点指向车辆
Vector3 vecC= target.position - p.position;
//反余弦函数得到度数
float angle = Mathf.Acos(Vector3.Dot(vecA.normalized, vecC.normalized));
//车与库点距离
float dis = Vector3.Distance(target.position, p.position);
//p与目标点在指定轴的投影距离
float proDis = Mathf.Cos(angle) * dis;
return proDis;
}