Unity3d 官方资源车控制器CarController和轮子碰撞WheelCollider调试实例

项目中用到对小车的控制,于是找到Unity Standard Assets中的Car示例进行学习,主要用到的脚本便是小车的主控制器CarController和轮子碰撞器WheelCollider。由于项目需求,还涉及到车轮的控制和对障碍物的碰撞等,所以调试手感方面花了些时间,网上也有前人对CarController进行了整理注释,确实方便理解,文末会把参考链接附上。

这里就记录下调试时用到的比较重要的参数,和一些调试过程中踩到的坑。

一、主要调整参数

CarController 主要调整参数:
FullTorqueOverAllWheels : 所有轮胎的扭矩力,用于控制车的启动力和运行时的力。
Topspeed : 和扭矩力配合修改,小车所能达到的最高速度。
TractionControl : 控制着牵引力每次增加或者减少的增量大小。为1启动力就会从零开始开始递增,然后速度逐渐到达最大,启动慢,不容易爬坡;为0,一开始就是最大的启动力,启动速度快。 这个看项目需求设置。
ReverseTorque : 反向扭矩,车轮的扭矩力
Downforce : 最大下压力,用来增加抓地力

WheelCollider 主要调整参数
Mass :车轮质量。
Radius :车辆半径,根据车模型调整。
Suspension Distance :悬挂距离。可根据车轮适当调整
Suspension Spring 悬挂系统。
Forward Friction 轮子的纵向摩擦力(车子前进后退方向的摩擦力);
SideWays Friction 轮子的横向摩擦力;(车子左右漂移方向的摩擦力)
Extremun Slip;Extremum Value;Asymptote Slip;Asymptote Value这四个值其实是坐标系上的两个坐标,他们确定了一个滑动距离与摩擦力的关系曲线。
stiffness Factor可以整体调节摩擦曲线的倍数
注:如果车辆质量增大,以上参数基本上也需要适当调整增大。

二、踩坑实记

1、由于小车模型大小不一,轮胎的半径碰撞有需要调整,另外车的刚体质量受重力影响,质量变化,车的相应参数都需要调整,如FullTorqueOverAllWheels、ReverseTorque、Downforce等都需要调整。
2、如果小车出现行驶晃动,或者头重脚轻等现象,多半是需要增加轮子质量,调整Forward Friction和SideWays Friction以及Downforce等参数。
3、小车行驶过程中,尽量都用这两个脚本中的参数和力控制小车行驶速度,不要再额外施加其他的刚体力。
4、如果要控制小车的倾斜角度,保证小车翻越障碍或者撞击障碍不发生侧翻、仰翻,可以先在Rigidbody里控制FreezeRotation等需要的参数,之后再在小车Move的函数中进行rotation和velocity上角度的限定。
例:carRigid.velocity = new Vector3(carRigid.velocity.x, Mathf.Clamp(carRigid.velocity.y, -80, 60), carRigid.velocity.z);
5、如果四轮驱动小车出现上坡后轮悬空或者后轮悬挂过大,很可能是代码中有其他控制小车方向、旋转的代码。
6、小车的body碰撞盒也可以注意下,可根据项目需求调整大下和高度,以方便翻越障碍和避免腾空落地速度骤减等具体情况。

三、调试结果

附上两组调整前后参数的图,仅供参考。
Unity3d 官方资源车控制器CarController和轮子碰撞WheelCollider调试实例_第1张图片
Unity3d 官方资源车控制器CarController和轮子碰撞WheelCollider调试实例_第2张图片
参考博客:
参考博文1
参考博文2
参考博文3

你可能感兴趣的:(Unity,unity)