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