unity wheel collider
本文主要介绍 Unity 中的 Wheel Collider(车轮碰撞器),接下来我们将重点讲解 Wheel Collider 的属性和详细信息。
菜单位置
Component >> Physics >> Wheel Collider
车轮碰撞器概述
车轮碰撞器是一种特殊的地面车辆碰撞器,它内置了碰撞检测功能、车轮物理引擎以及基于滑移的轮胎摩擦模型。虽然它也可用于其他对象,但专门为有轮子的车辆设计。
属性与详细信息
车轮的碰撞检测
车轮碰撞器通过自身 Y 轴的中心向下投射一条射线来进行碰撞检测。车轮有一个半径,并且可相对于悬挂距离向下延伸。车轮可从脚本使用不同的属性进行控制,如动力力矩、制动力矩和转向角。如需查看更多信息,请参见车轮碰撞器脚本参考。
摩擦力计算
车轮碰撞器从物理引擎静止状态开始分开计算摩擦力,采用基于滑动摩擦力的模型。这种方式能使车辆表现更真实,但也会导致车轮碰撞器忽略标准的物理学材质设置。
车轮碰撞器设置
不要通过旋转或滚动 WheelCollider 物体来控制轿车,附加 WheelCollider 的物体应始终相对于轿车自身保持固定。不过,你可能希望旋转或滚动图形轮,最佳做法是分别设置物体的碰撞器和可见的车轮,即让车轮碰撞器与可见的车轮模型分开。
碰撞器几何结构
由于车辆可能达到较高速度,创建合理的碰撞几何结构非常重要。具体而言,赛道的碰撞网格(collision mesh)不应有小的凹凸不平,通常赛道的碰撞网格和可见网格分开制作。在弯道设计时,需要注意由于离心力的影响,弯道外侧应比内侧高一些,这样能使车辆更容易转弯。一般来说,可见几何模型(左)比碰撞几何模型(右)复杂得多。
车轮的摩擦力曲线
轮胎摩擦力由车轮摩擦力曲线描述,车轮在向前方向(滚动方向)和侧面方向分别有单独的曲线。在这两个方向上,首先要确定轮胎的滑动程度(基于轮胎橡胶和路面之间的不同速度),然后使用滑动值(slip 值)来找出施加到接触点的轮胎力。
该曲线以轮胎滑移作为输入,输出一个力,近似由两段曲线构成。第一段从(0, 0)到(extremumSlip, extremumValue)再到(asymptoteSlip, asymptoteValue),在此处曲线的切线再次为零。
车轮模型可分解为横向(侧面)和纵向(滚动方向),对于每个方向,都有一条曲线显示车轮和地面间的滑度与所形成的力度之间的关联,其形状与下图中的曲线相似。
真实的轮胎属性是,较慢的滑动会获得较高的力,因为橡胶通过拉伸补偿滑动;而当滑动程度变高时,力会减小,因为轮胎开始滑动或旋转,所以轮胎摩擦力曲线具有上述形状。
在横向上,滑角(Slip Angle)作为输入;在纵向上,滑率(Slip Ratio)作为输入。指定这些曲线的方式是提供示意图中“Extremum(极值)”和“Asymtote(渐近线)”两点的坐标。“Extremum(极值)”指的是最大外力的点位,“Asymtote(渐近线)”点位提供了无限滑动时的输出值。每个点位处的切线均视为平滑,然后在它们之间放置一个立体样条,从而确定曲线的最终形状。
提示
- 若赛车能达到很高的速度,你可能需要在时间管理器上减少物理时间步长,以获得更稳定的赛车物理效果。
- 为防止汽车轻易翻车,可以通过脚本降低其刚体的质量中心,并根据车辆的速度施加“下压”的力。