版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Unity3D教程:车辆性能算法Unity3D教程:车辆性能算法Unity3D教程:车辆性能算法xxx公司Unity3D教程:车辆性能算法文件编号:文件日期:修订次数:第1.0次更改批准审核制定方案设计,管理制度Unity3D教程:车辆性能算法Postedon2013年06月05日byU3d/Unity3D基础教程/被围观123次首先要了解真实车辆的原理:车辆分前轮驱动,后轮驱动和四驱动。动力由引擎提供,反应的力到轮胎上,因此产生转数,即RPM。引擎的功率可以由RPM得到公式为:RPM=引擎功率×60/2×pi,这些都是模拟,只为了更好的为下面的动作服务。还有大众关心的“漂移”,所谓漂移就是,在后驱车辆中,前轮方向旋转大角度,地面给于一定向心力,同时后轮又给予更多动力,导致“漂移”动作。首先,车辆不可能整个套一个外壳,原因是在接触地面时,对车辆所使的力不可能达到你预期的目标,引起,必须在车辆轮胎以上做外壳碰撞,轮胎以下就需要有力来支持它始终保持不掉下来。Unity3D中有个WheelCollider,它是专门模拟轮胎支持力和轮胎转数,以及轮胎横向力,前进力,以及悬架避震系统。这个东西非常方便,只要你把这个东西套在4个轮胎上,调试下他的forwardFriction和sidewaysFriction达到你想要的效果,然后对驱动轮的motorTorque进行赋值,你的车辆就能动了。记得你需要无数次调试前进摩擦力和横向摩擦力。至于悬架系统在你需要时也可以改变其值。还有,这两个摩擦力,是一个由低到高,再由高到稳定的一条曲线。这个WheelCollider非常好用,曾一度沉迷于此。但后来发现,他有很多不合理的地方。想要得到最好的效果,还是抛弃了他。为了支持车辆的碰撞外壳不接触地面,必须写一个悬架动态支持力,在4个轮胎位置,支持整辆车悬浮于地面之上。关于这个悬架动态支持力:voidSuspensionHoldForce(){floatfullCompressionSpringForce=***=true;0506foreach(GameObjectiteminFwheelModels)07{08RaycastHithit;09boolonGround=(,outhit,+;1011if(onGround&&{13onGround=false;14floatdist=+;15RaycastHit[]hits=(,,+);16foreach(RaycastHittestinhits)17{18if(!&&<=dist)19{20hit=test;21onGround=true;22dist=;23}24}25}2627if(onGround)28{29Vector3wheelVelo=Vector3localVelo=(wheelVelo);31Vector3groundNormal=;32floatdamperForce=(localVelo,groundNormal)*5000f;33floatcompression=-(-radius)/suspensionTravel);34Vector3springForce=(fullCompressionSpringForce*compression-damperForce)*36==0f;3738springForce,);3940}41else42{43=false;44}45}4647foreach(GameObjectiteminBwheelModels)48{49RaycastHithit;50boolonGround=(outhit,+;5152if(onGround&&{54onGround=false;55floatdist=+;56RaycastHit[]hits=(,+);57foreach(RaycastHittestinhits)58{59if(!&&<=dist)60{61hit=test;62onGround=true;63dist=;64}65}66}6768if(onGround)69{70Vector3wheelVelo=Vector3localVelo=(wheelVelo);72Vector3groundNormal=;73floatdamperForce=(localVelo,groundNormal)*5000f;74floatcompression=-((-radius)/suspensionTravel);75Vector3springForce=(fullCompressionSpringForce*compression-damperForce)*==0f;77springForce,);78}79else80{81=false;82}83}84}那么在完成悬架支撑后,就该设计车辆动力了。这里也有2种方法:一个方向是真实车辆行驶轨迹,另一个是模拟型车辆轨迹。前者的方法是,将动力点放在车辆驱动轮上,例如后轮。用rigidbody的AddForceAtPosition可以做到,前轮只需要提供横向力就可以实现转弯的轨迹。但别看说说这么容易,这里面还涉及非常多的数值和曲线问题。在提供车辆动力时,你需要一条曲线,以致车辆不会匀加速,因为这样很不真实,还有在前轮横向力中,你必需是条由0到最高点,然后下降到平衡点的曲线。这样你的赛车才显得更真实。这些都需要用到几个数学知识。Unity3D教程手册后者,是用算法来模拟的一种车辆轨迹。这个算法所有作用力作用在车辆的中心点。转弯轨迹,我是用转弯半径来表示,使得车辆在转弯时有相当的真实性,必须改变车辆转弯速度。当然,用到了些数学知识。代码如下:01#region计算转弯角度02voidSteering(boolcanSteer,Vector3relativeVelocity)03{04if(canSteer&&)05{06if(==1)07{08([0].+[1].*),,*2f***2f);09*3f*[0].;10*3f*[1].;11return;12}1314if(*<0)15return;1617floatturnRadius=/((90f-*);18floatminMaxTurn=EvaluateSpeedToTurnfloatturnSpeed=/turnRadius,-minMaxTurn/10,minMaxTurn/10);20+*turnRadius*,,turnSpeed***);2122=FwheelModels[0].*(R
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 南京市2024年度城市供水排水工程合同
- 二零二四年高档住宅区供暖工程合同2篇
- 简易的材料购销合同
- 2024年度居间介绍工程采购合同3篇
- 商业演出合同范本
- 高铁护坡施工设备租赁2024年度合同
- 《事故树分析方法》课件
- 《市政道路施工概述》课件
- 个人承包合同出租车范本
- 财务人员管理报告范文
- 2024-2034年全球及中国核辐射行业市场发展现状及发展前景研究报告
- 微测网题库完整版行测
- 借款协议书格式模板示例
- 国家开放大学《管理英语4》边学边练Unit 5-8(答案全)
- 作家普希金课件
- 封山育林工程 投标方案(技术方案)
- 当代世界经济与政治 李景治 第八版 课件 第1、2章 当代世界政治、当代世界经济
- 2024年刑法知识考试题库附参考答案【满分必刷】
- 国开作业《公共关系学》实训项目1:公关三要素分析(六选一)参考552
- 肺功能进修总结汇报
- 《燃烧性能测试》课件-第二节 氧指数测试
评论
0/150
提交评论