我正在用 Python 编写一个以重力为主要机制的 2D 游戏。
我制作了一些游戏引擎,但我被卡住的部分实际上是确定要为每个质量的 X 和 Y 速度添加什么。
假设我有圆 A 和圆 B,每个圆都有一个位置、一个速度和一个质量。每个都应该相当逼真地拉向另一个,模拟牛顿引力。我将如何实现这一目标?
是的,我对测量单位非常模棱两可。稍后我可以尝试更改变量以适应公式。
我正在用 Python 编写一个以重力为主要机制的 2D 游戏。
我制作了一些游戏引擎,但我被卡住的部分实际上是确定要为每个质量的 X 和 Y 速度添加什么。
假设我有圆 A 和圆 B,每个圆都有一个位置、一个速度和一个质量。每个都应该相当逼真地拉向另一个,模拟牛顿引力。我将如何实现这一目标?
是的,我对测量单位非常模棱两可。稍后我可以尝试更改变量以适应公式。
你需要解出每个物体的运动方程。它们将被写成一组耦合的一阶常微分方程。您将分别为 x 和 y 方向编写一个方程,它将给出作为两个物体之间的重力除以它们各自质量的函数的加速度。
你知道加速度、速度和位移之间的关系。
您最终需要求解四个耦合的常微分方程。使用时间步进解决方案及时推进解决方案 - 显式或隐式,您的选择。
假设你有一个游戏中的量化时间单位,一个时钟的“滴答”,如果你愿意的话,给每个身体一个速度向量(每个“滴答”移动多少,朝哪个方向)和对于每个刻度,让彼此的身体根据它们的距离将其速度矢量改变一定量(对其施加力,除以它的质量)。然后,只要你的时钟滴答作响,物体就会根据它们的速度矢量移动,然后它们的速度矢量会根据施加在它们身上的净力而改变。只要你决定哪个先发生——加速还是运动——只要你的刻度足够小,你应该没问题。