2017年11月13日星期一

游戏中的物理(车辆)(四)

游戏中的物理(车辆)(四)

一个汽车模拟器

让我们用已经了解的知识来建立一个汽车模拟器。该模拟器的GUI界面如图8-8所示。界面的上方是显示区域,显示汽车的图片,汽车的上面是两个矩形的标记。当模拟器运行时,汽车的位置保持不变,标记从左边移动到右边,模拟汽车向前运动。标记移动的速度即为汽车运动的速度。

GUi界面的左边是三个圆形按钮,分别表示汽车加速,定速巡航,刹车。这些按钮是单选的。下面是五个按钮,start按钮启动或重启模拟,shift up 和 shift down控制换档,stop停车并换到一档,限制引擎转速为1000rpm。reset按钮做stop按钮相同的事情,并重置距离和时间为0.
界面的右边显示当前速度,引擎转速,当前档位,行驶距离,经过时间。界面的底部显示警告信息。如果引擎转速超过红线,将会显示信息。如果引擎转速超过8000转,你将“炸掉”引擎,模拟将停止。
这里的GUI界面比较原始,但是基本的物理是非常逼真的。模型包含空阻,滚动摩擦力,但是还是做了一些简化。车辆假定行驶在平直路上。刹车时,刹车加速度是-5.0m/s^2的常量。我们也没有模拟倒档,所以车辆只能前进或停止。
这里模拟的轮胎不会打滑。现实中的轮胎如果扭力太高则会打滑。稍后我们将会讨论如何模拟“烧胎”效果。
模拟车辆需要两种类:一种表示汽车,另一种定义GUI。首先讨论表示车的类。这里有两个类:一个叫Car,描述所有车的特性。它是DragProjectile类的子类。

/*接下来的部分是游戏物理的代码实现,由于我的重点是汽车的物理,这里就不再介绍*/

注意这里的模拟器使用的是式8.20的最大加速度(即油门按下即是最大)。

没有评论:

发表评论