Closed. This question does not meet Stack Overflow guidelines。它当前不接受答案。












想要改善这个问题吗?更新问题,以便将其作为on-topic用于堆栈溢出。

4年前关闭。



Improve this question




是否有适用于Linux的Python良好的最新物理库?我只是使用PyGame进入Python,但是PyGame缺少物理库并不酷。我花了大约两个小时的时间来寻找一个好的物理库,但这就像在试图获取石油。我似乎做不到。

我根本不需要物理引擎。我要做的就是编程一个对象,使其“跳起来”,然后掉到地上。似乎发生了一些简单的冲突(我认为PyGame可以处理),但实际的跳转计算使我很困惑。如果事实证明没有可用的好物理库,那么这个问题似乎很简单,我可能会尝试找到一个基本的加速度方程式和一个重力方程式,然后尝试应用这些方程式...我想避免但是要做到这一点。

谢谢你的帮助。

最佳答案

基本的物理运动方程式就是您所需要的。即使已经回答了问题,但如果我是您,我仍然会手动完成此操作,因为使用图书馆似乎有点过头了。启动速度方程:

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时结束

关于Python物理库?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6381137/

10-15 12:49