1

我正在尝试编写一个简单的游戏,但我坚持我认为是简单的物理。我有一个物体,它在点 0,0,0 并且以每秒 1 个单位的速度行进。如果我给出一个指令,物体必须每秒转动 15 度,持续 6 秒(所以它最终在它的起始位置右侧 90 度),并以每秒 1 个单位的速度加速 4 秒(所以它的最终速度是 5单位每秒),我如何计算它的终点?

我想我知道如何为一个没有加速的物体回答这个问题,因为它只是一个圆圈。在上面的例子中,我知道圆的周长是 4 * 距离(因为它遍历圆的 1/4),由此我可以计算出半径和角度,并使用简单的三角函数来解决答案。

但是,因为在任何给定时刻,物体的行进速度都比前一时刻稍快,所以我的最终结果不会是圆,而是某种弧线。我想我可以通过循环每一步(比如每秒 60 步)来估计终点,但这听起来容易出错且效率低下。

有人能指出我正确的方向吗?

4

2 回答 2

1

您逐步执行的概念正是您所做的。

几乎所有游戏都在所谓的“游戏时间”下运行。实际上可能会发生许多不同的滴答声。

“游戏时间” - 每个游戏时间,都会触发一组请求,重新评估 AI,并且总体上游戏状态发生了变化。

“物理滴答” - 每个物理滴答,每个物理对象都会根据其当前物理状态发生状态变化。

“图形滴答” - 也称为渲染循环,这只是将游戏状态绘制到屏幕上。

游戏滴答声和物理滴答声经常(但不需要)彼此重合。你可以有一个物理刻度,以当前速度沿当前移动向量移动对象,并在必要时对其施加重力(改变其速度),同时在一个完全独立的循环中添加额外的加速度(可能通过火箭助推器?)。通过适当的多线程处理,它会很好地组合在一起。它们解耦得越多,以后用更好的实现替换它们就越容易。

通过时间步进行模拟是几乎所有物理在实时游戏中的完成方式。我什至曾经为国防部做过热建模,这也是我们在那里进行物理建模的方式(我们只需要使用更大的计算机 :-))

此外,这允许您在物理引擎中实现复杂的旋转。物理引擎中的特殊情况越少,破坏的东西就越少。

于 2011-05-03T08:48:49.490 回答
0

您要问的实际上是数学变化率问题。运动中的每个物体都有 (x,y,z) 的位置位置。如果您能够将分量速度和加速度分解为它们各自的平面,那么您的最终终点将是 (x1, y1, z1),这是您的方程在该平面中的相应结果。

希望能帮助到你 (:

于 2011-05-03T08:49:57.980 回答