Python物理库?
有没有适合Linux的Python最新物理库?我刚刚开始使用PyGame学习Python,但PyGame缺少物理库并不酷。我花了大约两个小时试图找到一个好的物理图书馆,但这就像试图抓住石油;我似乎做不到 我几乎不需要物理引擎;我所要做的就是编程一个物体向上跳,然后落回地面。似乎有一些简单的碰撞正在发生(我认为PyGame可以处理),但真正困扰我的是跳跃计算。如果没有任何好的可用的物理库,这个问题似乎很简单,我可以试着找到一个基本的加速度方程和重力方程,并尝试应用它们。。。不过,我想避免这样做Python物理库?,python,physics,pygame,Python,Physics,Pygame,有没有适合Linux的Python最新物理库?我刚刚开始使用PyGame学习Python,但PyGame缺少物理库并不酷。我花了大约两个小时试图找到一个好的物理图书馆,但这就像试图抓住石油;我似乎做不到 我几乎不需要物理引擎;我所要做的就是编程一个物体向上跳,然后落回地面。似乎有一些简单的碰撞正在发生(我认为PyGame可以处理),但真正困扰我的是跳跃计算。如果没有任何好的可用的物理库,这个问题似乎很简单,我可以试着找到一个基本的加速度方程和重力方程,并尝试应用它们。。。不过,我想避免这样做 谢
谢谢您的帮助。试试pyODE,它是opendynamicengine的python绑定
你可以找到更多的信息。是另一个你可能想看的有希望的信息。根据ODE网站的介绍,ODE包本身现在包含基于CPython的Python绑定;pyODE绑定被认为是过时的。安装说明包含在上一页中 默认情况下,这是针对Python2的,但我也能够使用Python3进行绑定,只需最少的工作量(MacOSX)。我甚至可以运行教程 这可能不符合主题,但为了记录在案,以下是我必须更改的内容:
sqrt
、sin
、cos
、asin
和acos
(第33-37行,文件版本:2001年3月20日)的定义来更改OpCode.h
。这是我所需要的一个丑陋的攻击,因为如果没有这个ODE本身,就不能使用双精度算法进行编译,如果我们可以信任ODE页面上的文档,就需要使用python绑定
setup.py
:
# bugfix: in Python3 read() returns bytes, which need to be converted
# to strings
try:
ode_cflags = [x.decode("utf-8") for x in ode_cflags]
ode_libs = [x.decode("utf-8") for x in ode_libs]
except:
# in Python2 we just continue
pass
demos
目录中
$ 2to3 -w *.py
就这样。基本的物理运动学方程就是你所需要的。即使这些问题已经得到了回答,如果我是你,我还是会用手去做,只是因为使用图书馆似乎有点过头了。启动速度方程:
velocity = initial velocity + (acceleration * time)
在此基础上,我们整合以找到位置:
position = initial position + (initial velocity * time) + (acceleration * time^2)/2
您的跳跃是为了计算角色的y位置,所以只需使用该方程来计算y位置,并使用初始速度和加速度。重力引起的标准加速度为每秒-9.8米^2(至少在地球表面——不同的行星是不同的)。从角色所在的初始位置开始,如果地面对你来说是0,则从0开始
因此:
选择一个初始速度v
值,以在跳跃开始时提供向上运动,t应为他开始跳跃后经过的比赛时间
您只需要一行代码就可以做到这一点,不需要库
编辑:处理着陆时要做的事情
所以在现实世界中,加速度是由不平衡力引起的。重力总是作用在你身上,但当你站在地面上时,它会被地面的“法向力”抵消。只要你站着的地面足够坚固,足以支撑你的重量,地面就会向上推,并反重力,你就不会向下加速。因此,在游戏中,如果你没有实际模拟力,当你的角色接触地面时,只需将加速度从-9.8更改为0。如果地面平坦,您的跳跃将在
位置=初始位置时结束
好的,在经历了巨大的痛苦并“成功”安装了模块之后,我运行了一个PyODE示例,它给出了这样的信息:“ImportError:没有名为ode的模块”。嗯??是我安装的!知道这里发生了什么吗?@Elliot,你能告诉我你的python版本和操作系统,以及你如何安装pyODE吗?我使用的是windows安装程序,它是开箱即用的。我在Linux(Ubuntu 10.10)上使用的是Python 2.7。pyODE似乎正在安装到2.6,但当我将其中一个示例作为Python 2.6(使用别名)运行时,仍然会出现相同的错误。我首先安装ODE,然后通过“Python setup.py install”命令行函数安装pyODE。基本的物理运动方程就是您所需要的。即使这些问题已经得到了回答,如果我是你,我还是会用手去做,只是因为使用图书馆似乎有点过头了。开始速度方程。嗨,恰克,谢谢你的清晰简洁的回答。我将我的公认答案改为你的答案,因为它可能对未来寻求实现“跳跃”代码最简单方法的人更有用。@elliot感谢未来的反馈更新:值得注意的是,许多游戏实现的跳跃不是基于物理的。例如,在2d马里奥游戏中,马里奥摔倒的速度要快得多。在3d马里奥游戏中,他摔倒的速度要慢得多。只是想一想——如果你不想,你的游戏不必遵守物理!
y = vt + (-4.9)t^2