跑跑卡丁车的核心物理引擎——Part 2: 转向原理

注:受限于精力,后续文章将直接展示结论而略去推理过程。若您对推理部分感兴趣,请私聊我。

    所有赛车游戏的转向原理都遵循一个基本逻辑:玩家通过手柄或方向键控制赛车前轮的偏转角度,系统根据赛车的运动状态判定轮胎所受的摩擦力,这些摩擦力反馈到赛车上,决定赛车后续的运动状态。上至尘埃、地平线这类硬核赛车游戏,下至马里奥赛车、跑跑卡丁车这类休闲赛车游戏,这套逻辑都适用。实际上这也是现实生活中赛车的转向原理。

    我们通过一个实例来展示这套算法逻辑的工作方式:在赛车直行时按住方向键,让赛车转向。该过程中依次发生了这些事情:

1. 由于前轮的偏转,前轮的朝向与其运动方向之间有一个夹角α,前轮会因此受到侧向摩擦力,其方向垂直于轮胎朝向,大小与α正相关。该侧向摩擦力不仅提供了赛车转向所需的向心力,它产生的力矩还会使车身开始旋转。

2. 当赛车的运动状态改变后,后轮也会开始受到侧向摩擦力。除了提供转向向心力以外,它还会抵消一部分前轮上的侧向摩擦力产生的力矩,使车身的旋转速度稳定下来。

3. 达到稳定状态后,前轮与后轮提供的旋转力矩刚好抵消。此时车身围绕其质心匀速旋转,同时质心围绕一圆心做匀速圆周运动。

注意到漂移不过是夹角更大的转向,因此以上描述同样适用于漂移。总的来说,转向过程中前轮起到导向作用,而后轮起到稳定作用。相对应的,转向时若松开方向键,在赛车的回正过程中,后轮起到回正作用,而前轮起到稳定作用。请注意使赛车回正的是后轮上的侧向摩擦力,而不是民间流传的漂移逃出力,因为逃出力无法提供任何力矩。我们会在下一篇文章中讨论逃出力的详细机制。

    如果要从零开始搭建一款赛车游戏的物理引擎,那么开发者需要解决两个核心问题:一是按下方向键后前轮应当偏转多少,二是轮胎所受的侧向摩擦力受哪些因素影响。这两点会强烈地影响游戏的手感。下面我们来详细说说这两点:

1. 关于第一点,最直观的想法是按下方向键后让前轮偏转一给定角度。但这样的话会给赛车赋予过强的转向能力,也就是过于“灵活”了,缺失了那种高速状态下刹不住车的速度感。所以更常见的处理方式是让前轮的偏转角随速度增高而降低。对于跑跑的情况来说,偏转角会随速度增长指数降低。这里的“速度”指的是平行于车头方向的分速度。换句话说,如果卡丁车沿着垂直于其车头的方向滑行,此时前轮是可以满偏的。偏转角的降低速率由“Steer Constraint”这个参数控制,也就是卡丁车面板中“弯道”这一项。

2. 侧向摩擦力的决定机制相当复杂。赛车游戏是归类于“硬核”还是“休闲”就取决于侧向摩擦力的算法。总的来说,它可以表示为:

α也就是轮胎朝向与其运动方向的夹角。f(α)是一个关于α的增函数,也就是之前说的“侧向摩擦力大小与α正相关”。我们来分别说说如何决定上式中的三项乘数:

  • 轮胎负载一般来说由四个轮胎等量分担。然而,当车辆处于加速或减速状态时,负载会向后轮或前轮处转移:想象一下,加速时赛车是不是有一种“后仰”的趋势?此时后轮承受的负载更多一些,而前轮承受的更少一些。减速的情况则与此相对。负载的转移比率与赛车的重心高度成正比,与前后轮的间距成反比。对于跑跑的情况来说,负载转移率是0,也就是说四个轮胎总是等量分担负载。一个证据便是,即使处于很极端的加速状态,跑跑里也可以进行正常转向。如果存在负载转移,此时前轮上的负载应当很小,这会使得转向非常艰难才是。可以说跑跑里的所有卡丁车重心都在底盘上,是完美的赛车。

  • 当α很小时,f(α)与α几乎成正比。随着α增大,f(α)的值会逐渐趋于饱和,最后稳定在某个值上。对于现实生活中普通汽车的轮胎,f(α)在5°左右便趋于饱和。如果α大于某个临界值,f(α)的值会迅速下降,代表轮胎突然失去摩擦力,进入打滑状态。这便是所谓的“漂移”。对于跑跑的情况来说,抓地状态下f(α)几乎不会饱和,但其增长速率仍会随着α增大而降低;当α大于约50°时,卡丁车进入漂移状态;此后f(α)的值会陡降至原来的五分之一,并在90°左右趋于饱和。由于游戏视角原因,玩家往往会对漂移角的大小产生误判。实际角度一般比感官角度要大。这里漂移临界角的测量是通过测量漂移痕迹的像素宽度实现的,具体方法限于篇幅原因不在此详述。

  • 决定比例因子的因素有很多。这里列举一些会加入游戏设计中的常见因素:比如说,如果轮胎除了侧滑外还有纵向滑动(即平行于轮胎方向上的滑动,理想情况下该方向上应为纯滚动),这部分滑动产生的摩擦力会抢走一部分侧向摩擦力,使其以一定比例降低;再比如,赛车的悬挂系统(相当于车体与轮胎之间连着弹簧)会使得轮胎的总负载随赛车的运动状态变化,进而影响侧向摩擦力。更细节一些赛车游戏还会加入胎温、路面、甚至天气的影响。对于跑跑的情况来说,唯一决定比例因子的是车宽。更确切地说,车身越窄,转向时车身的侧倾越严重;车身的侧倾导致轮胎的侧倾,进而减小了侧向摩擦力。“越窄的车越滑”,说的就是这件事。

注意到侧向摩擦力究其本质仍是一种滑动带来的损耗,因此它不可避免的会导致赛车减速。如果你玩过一些拟真向赛车游戏,应该能感觉到这些游戏中的转向减速比跑跑中要严重地多。这其中地奥秘在于跑跑引入的独特游戏机制“转向加速”:除了垂直于轮胎的侧向摩擦力,转向时还会产生一个平行于轮胎的“转向加速力”,其大小也与α正相关。这个力没有现实的物理根据,但在游戏设计上是合理的,因为它维持了游戏的“速度感”。也因为这个机制的存在,跑跑在地图设计上可以更加大胆地加入密集的弯道。早年流行的技巧“摇头加速”便是利用了这个游戏机制。而跑跑中的另一大游戏机制“拖漂”也是基于类似的设计理念,我们将在下一节中详述。

To be continued

   

资源下载: