除了默认的"Car"(汽车)模式(1)之外,你还可以选择技术上更简单的飞船"Ship"(2)和"Brick"(砖块)(3)模式,既可以通过设置中的模式选择器切换,也可以按下键盘上对应的数字键。
点击或按下"B"键可以切换游戏场地四周的碰撞屏障,“G"键则切换垂直重力(这只在Ship和Brick模式下才有实际意义)。
摄像机控制由"Z"和"X"提供:“Z"切换所谓的摄像机"死区”(dead zone),它决定载具移动多远后摄像机才会跟随;“X"切换与速度相关的缩放功能,当你速度更快时摄像机会稍微拉远(就像GTA中那样)。
*(当然,完全是以不侵犯版权和商标的方式)
[自愿声明:本作品完全独立于"Grand Theft Auto”(侠盗猎车手)系列及其发行商"Take-Two”,或名为"Rockstar Games"的开发实体,与之毫无关联。我非常乐意明确说明这一点,甚至是欣喜若狂地乐意。]
原型将一个通用的2D刚体与一个刻意简化的汽车模型结合在一起。
最初的模拟始于类似"Brick"的东西,随后我添加了一些增强功能做出了"Ship"(它刻意让人想起1986年的经典游戏"Thrust"),最后才加入那些让它感觉更像"Car"所需的元素。
系统的核心是一个简单的经典2D刚体动力学模拟。据我所知,这种方法在当时游戏中还不常见(存在一些著名的例外),大多数游戏载具都是使用中学阶段的"点物理"(F = ma)实现的,任何旋转分量则由各种不可靠的"取巧方法"(hacks)处理。使用正确的刚体物理(包括力矩)能更连贯地处理旋转。
在这个核心之上,我又添加了一个"新颖的"载具模拟层,它基于一个简单、近似且技术上并不正确的轮胎行为模型。这基本上是我半凭猜测的产物,虽然我知道它在物理上并不精确,但对于当时的目的来说,它似乎已经"足够好"了。
这些图表描述了当前的JavaScript复刻版本。浏览器界面提供控制输入,模拟以固定时间步长推进,Canvas渲染器绘制结果状态。将这些职责分开,使得追踪"一次按键如何变成一个力"以及"这个力如何变成运动"变得更加容易。点击任意图表可以全尺寸打开。
载具将刚体与描述其显示形状和碰撞几何的外壳(shell)结合,再加上一个提供其行为的动力学对象。Brick接受来自指针拖拽的力;Ship在附着点添加推力;Car添加引擎力和转向,阻力施加在四个轮胎位置。切换模式会替换外壳和行为,同时保留刚体的位置和运动。
刚体同时追踪位置与速度以及角度与角速度。穿过中心的力会改变其运动;施加在中心之外的力还可以使其转动。模拟将力和力矩累加,更新速度,然后推进位置和角度。旋转刚体上的一个点拥有自己的速度,它结合了刚体本身的运动与绕其中心旋转的运动。