- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
-
. z.
Unity3D教程:车辆性能算法
Posted on 2013年06月05日 by U3d / Unity3D 根底教程/被围观 123 次
首先要了解真实车辆的原理:车辆分前轮驱动,后轮驱动和四驱动。动力由引擎提供,反响的力到轮胎上,因此产生转数,即RPM。引擎的功率可以由RPM得到公式为 : RPM = 引擎功率×60/2×pi ,这些都是模拟,只为了更好的为下面的动作效劳。还有群众关心的漂移〞,所谓漂移就是,在后驱车辆中,前轮方向旋转大角度,地面给于一定向心力,同时后轮又给予更多动力,导致漂移〞动作。
首先,车辆不可能整个套一个外壳,原因是在接触地面时,对车辆所使的力不可能到达你预期的目标,引起,必须在车辆轮胎以上做外壳碰撞,轮胎以下就需要有力来支持它始终保持不掉下来。
Unity3D中有个WheelCollider ,它是专门模拟轮胎支持力和轮胎转数,以及轮胎横向力,前进力,以及悬架避震系统。这个东西非常方便,只要你把这个东西套在4个轮胎上,调试下他的forwardFriction 和 sidewaysFriction到达你想要的效果,然后对驱动轮的motorTorque进展赋值,你的车辆就能动了。
记得你需要无数次调试前进摩擦力和横向摩擦力。至于悬架系统在你需要时也可以改变其值。还有,这两个摩擦力,是一个由低到高,再由高到稳定的一条曲线。
这个WheelCollider非常好用,曾一度沉迷于此。但后来发现,他有很多不合理的地方。想要得到最好的效果,还是抛弃了他。为了支持车辆的碰撞外壳不接触地面,必须写一个悬架动态支持力,在4个轮胎位置,支持整辆车悬浮于地面之上。
关于这个悬架动态支持力:
void SuspensionHoldForce()
{
float fullpressionSpringForce =this.rigidbody.mass* 0.25f * 2.0f *-Physics.gravity.y;
this.OnGround=true;
foreach( GameObject item in FwheelModels )
{
RaycastHit hit;
bool onGround = Physics.Raycast( item.transform.parent.position , -item.transform.parent.InverseTransformDirection(Vector3.up), out hit, this.suspensionTravel+this.radius);
if(onGround hit.collider.isTrigger)
{
onGround =false;
float dist =this.suspensionTravel+this.radius;
RaycastHit[] hits = Physics.RaycastAll( item.transform.parent.position , -item.transform.parent.InverseTransformDirection(Vector3.up) , this.suspensionTravel+this.radius);
foreach(RaycastHit test in hits)
{
if(!test.collider.isTrigger test.distance= dist)
{
hit = test;
onGround =true;
dist = test.distance;
}
}
}
if( onGround )
{
Vector3 wheelVelo =this.rigidbody.GetPointVelocity(item.transform.parent.position);
Vector3 localVelo = transform.InverseTransformDirection(wheelVelo);
Vector3 groundNormal = transform.InverseTransformDirection(hit.normal);
float damperForce = Vector3.D
您可能关注的文档
最近下载
- 学堂在线《PPP理论与实践》作业单元考核答案.docx VIP
- XKD99Z电磁流量计.cdr-上海星空自动化仪表有限公司.PDF VIP
- 出租车合理规模计算模型及控制策略研究.doc VIP
- 2023年最新资料员考试题库附参考答案【精练】.docx
- 2022年土地登记代理人题库700道及参考答案【培优b卷】.docx
- 小学校本课程教材《趣味数学》两篇.pdf VIP
- 商业综合体项目可行性研究咨询预测(2025-2028年).pptx VIP
- 中医科运用PDCA循环提高中医特色治疗室消毒合格率PDCA成果汇报.pptx
- 基于FPGA的Verilog-HDL数字钟设计--电子电气自动化.docx VIP
- 水系钠盐电池项目环境影响报告表.pdf
原创力文档


文档评论(0)