我已经问过类似的问题,但现在我遇到了管理和实现简单 2d(自上而下)赛车游戏的“现实”转向的问题。
我怎样才能为汽车做一个“现实的”转向?(我使用 c#,但欢迎使用另一种语言;))使用 Sin 和 Cos ?如果是,如何?提前致谢!
我已经问过类似的问题,但现在我遇到了管理和实现简单 2d(自上而下)赛车游戏的“现实”转向的问题。
我怎样才能为汽车做一个“现实的”转向?(我使用 c#,但欢迎使用另一种语言;))使用 Sin 和 Cos ?如果是,如何?提前致谢!
我正在午休,所以我无法对“最佳”答案做出巨大的公正,但伪代码看起来像这样:
y_change = sin(rotation) * speed;
x_change = cos(rotation) * speed;
car.x += x_change;
car.y += y_change;
您将在每一帧中执行此代码;旋转将由您的转向输入控制,速度将由您的加速度输入控制。
您可能想要使用其他人已经创建的物理引擎。我听说过有关XNA Physics API的好消息。
我想你将不得不使用正弦和余弦,但这只是一个非常大的冰山一角......
算法是:
记录别人的驾驶方式(使用开发版游戏)
(可选)将录音分割成片段以适应各种常见情况。
在游戏中重播录音。(使用合适的片段并可能在它们之间插入轨迹)。
您也可以尝试模糊逻辑和简单的转向单元模型。
模型将是:
x = integrate horiz_velocity by t
horiz_velocity = intergate steering_angle by t
and steering_angle = fuzzy_steering_function(...)
对于要求不高的应用程序, Brian Driscoll十年前给出的有用答案是您需要了解的全部内容。我经常使用通过控制器的加速度修改的速度矢量对位置进行欧拉积分。
轮式车辆的一个有趣的侧边灯是它们不会围绕其重心旋转。一辆典型的汽车沿通过后轴的线绕一个点旋转,但很好地向侧面偏移。
这个概念对于真实的车辆很重要。他们的转向机构试图符合阿克曼转向几何形状,以最大限度地减少因打滑造成的磨损。在模拟车辆中,这些考虑因素对于模拟瞬时曲率和预测未来路径很重要。