【unfly惰性翻译贴】unity3d官方教程“The Car Tutorial”(第二部分:调校)

2 replies [最后一篇]
unfly
User offline. Last seen 1 年 11 周 ago. Offline
注册用户
Joined: 01/18/2011
Points: 10

二、调整汽车

完成教程的第一部分之后,你可能觉得已经很好了。但是如果你开车去跑一圈,你可能会发现还有些改善的余地。因为还需要调校,在游戏开发中,调校是一个关键部分。

Center of Mass(质心)
现在最明显的问题是,汽车很容易翻。这是因为我们没有设定汽车的质心,默认情况下,质心和网格中心重合,但通常汽车质心的位置受到发动机等多种因素影响,因而不可能就是车的中心,所以要设置自己的质心。在本教程中汽车质心的位置在发动机后面,略高于地面。如图所示:

创建一个新的空游戏物体并作为汽车游戏物体的子物体,重命名为CenterOfMass。在Inspector视图,点击小齿轮重置质心的Transform(位置),现在质心与它的父物体汽车在同一位置。调整质心的位置到(0, 0.1, 0.65)。这是一个相对汽车中心的位置,为防止出现奇怪的转向问题,确保x轴为0。把质心指定给汽车脚本的CenterOfmass槽。

Suspension(悬挂)
另一个对汽车行为有重大影响的因素为悬挂。
在Inspector视图中,有三个变量可以调试悬挂,range、damper和spring,它们都属于WheelCollider类。这三个变量可以让你可以调整出从一级方程式赛车到大脚怪赛车的各种悬挂类型。

Suspension range
从正常状态到完全压缩的最大距离,差不多就是轮胎到轮眉的距离。
Suspension spring
这个值决定了悬挂的韧性,设的非常高使悬挂非常硬,没有任何压缩,设得非常低会使悬挂非常有弹性。需要明确的是,汽车的重量对这个值的调整也有很大的影响。一个非常重的车要比轻的车需要更大的spring值。默认情况下,我们设置后悬比前悬要低的值,因为质心比较接近前悬。
Suspension damper
减震器运用液压油将不需要的动能转换成热能,有助于控制悬挂的运动,如果没有减震器,悬挂弹簧将会反复震动直到能量耗尽,导致多余的震动及难以控制。
Drag Multiplier
当添加Rigidbody到汽车的时候,Rigidbody有一个drag属性,这个属性可以模拟惯性和空气阻力,阻碍刚体的运动。

汽车外观的设计,依赖于空气动力学思想,并减小空气阻力系数,因此汽车的正面、侧面、和顶面都会有不同的空气阻力。我们使用Car脚本的Drag Multiplier来代替Rgidbody内建的DragMultiplier,因为它包含x、y、z三个分量,可以更精确的模拟汽车侧面、顶面、前面的空气阻力。

x值是转向时防止侧滑的重要控制力,更高的值有更高的侧向阻力使汽车侧面更稳定。
z值将调整阻止汽车前进的空气阻力。如果小于1那么就会有更快的加速度和更高的顶速度,如果大于1汽车移动就需要更大的力。这个值非常的敏感,建议调整的时候幅度要小。
y值就不怎么重要了,因为不是飞机。

Speed, turning and gears
这些参数对汽车有更大的影响。
Top Speed
最高速度,无须解释。
Maximum Turn 和 Minimum Turn
决定着汽车的转向速度,即方向盘随速助力。速度慢的时候方向盘转动更轻,高速的时候方向盘转动更重更稳。速度慢的转向速度受Maximum Turn影响,速度快的转向速度受Minimum Turn影响。
Number Of Gears
模拟自动变速箱的档位,比如大众的六速手自一体变速箱当然就是6,这个参数大概是影响脚本中引擎的动力和发动机和换挡的声音。

Exporting the car as a package
如果你希望在自己的项目中重用汽车,那就需要将它打包输出。

Project视图,点击Create选择Prefab,建一个空的预置,重命名为‘Race Car’。从Hierarchy视图拖Car游戏物体到预置。
搜索Project视图选择以下文件:
Prefabs/VFX:Directional_Light_Car_Road,Main_Camera,Skidmarks
scripts/Javascripts:SoundToggler.js
Pro Standard Assets/Image Based/ImageEffects.cs 和 ImageEffectsBase.cs
包括刚才建立的Race Car预置,点击‘Export package...’在弹出对话框中确认include dependencies选中,这将通过脚本将其他依赖的资源都包含在内。然后点击‘Export’导出。
在你自己的项目中选择Assets->Import package...,选择包,点击‘All’然后导入。然后从Project视图拖到场景中就可以使用了。

 

unfly
User offline. Last seen 1 年 11 周 ago. Offline
注册用户
Joined: 01/18/2011
Points: 10

“惰性”就是懒惰的德性的意思,因为我是一个很懒惰的人呐

xman
User offline. Last seen 3 天 20 小时 ago. Offline
中级会员
Joined: 09/07/2009
Points: 1042

不错的帖子,惰性?这两个字在此是什么意思!