Python物理库?

时间:2011-06-17 03:49:06

标签: python physics pygame

是否有适用于Linux的Python最新物理库?我刚刚使用PyGame进入Python,但PyGame缺少物理库并不酷。我花了大约两个小时试图找到一个好的物理库,但这就像试图抓油;我似乎无法做到。

我根本不需要物理引擎;我想要做的就是将物体编程为“跳跃”然后再回到地面。似乎有一些简单的碰撞(PyGame可以处理,我认为),但实际的跳跃计算让我感到困惑。如果事实证明没有任何好的可用物理库,问题似乎很简单,我可能只是试图找到一个基本的加速度方程和一个引力方程,并尝试应用那些......我想避免但要做到这一点。

感谢您的帮助。

3 个答案:

答案 0 :(得分:5)

Pymunk是另一个你可能想要看一下的有希望的。

答案 1 :(得分:4)

尝试pyODE,它是开放动态引擎的python绑定。

您可以找到更多信息here

答案 2 :(得分:1)

基本的物理运动方程式就是您所需要的。即使这些问题已经得到解答,如果我是你,我仍然会手工做,因为使用图书馆似乎有点矫枉过正。启动速度等式:

velocity = initial velocity + (acceleration * time) 

从那里,我们整合找到位置:

position = initial position + (initial velocity * time) + (acceleration * time^2)/2

你的跳跃是想要计算角色的y位置,所以只需使用该等式计算y位置和玩具的初始速度和加速度。由重力引起的标准加速度为-9.8米/秒^ 2(至少在地球表面 - 它是不同的儿子不同的行星)。无论你的角色是什么,都从初始位置开始,如果地面为0则为0。

所以:

y = vt + (-4.9)t^2

选择初始速度v值以在跳跃开始时提供向上移动,t应该是自他开始跳跃以来经过的游戏时间。

您只需要一行代码就可以完成此操作,无需库!

编辑:处理登陆时的操作。

所以在现实世界中,加速是由不平衡力引起的。重力总是作用于你,但当你站在地面时,它会被地面的“法向力”抵消并抵消。只要您站立的地面强度足以支撑您的体重,地面就会向上推,并抵抗重力,您不会向下加速。所以在你的游戏中,如果你实际上没有模拟力量,只需在你的角色接触地面时将加速度从-9.8改为0。如果地面平坦,则在position = initial position

时跳转结束