问题标签 [pymunk]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
2391 浏览

python - Pymunk(花栗鼠) - 如何暂时关闭具体物体的物理/碰撞

如何关闭某些对象的碰撞,然后在 python 中使用 pymunk lib 再次打开它?

让我根据下面的代码向您展示示例。我希望所有红球都通过线的第一个边界并停在下边界。蓝色球仍应与上边界碰撞。

代码中需要改变什么?

0 投票
2 回答
575 浏览

python - 在动态体和移动的静态体之间在 pymunk 中创建 DampedRotarySpring

我正在努力按照标题所说的去做。我有一个手持枪的角色,我试图让枪指向光标。我认为 DampedRotarySpring 会是一个不错的方法,但事实证明并不是那么简单。枪是一个具有 Segment 形状的动态体,对于光标,我创建了一个静态体,我在每一步都使用 pygame 将其位置设置为鼠标位置。

当我运行程序时,除了重力或碰撞的影响之外,枪根本不动。

以下是相关代码:

编辑:

这是我所有代码的 Gist 存储库:https ://gist.github.com/4470807 。主循环在 ragdoll.py 中。

0 投票
2 回答
1138 浏览

python - 将 Pymunk 与 Pyinstaller 一起使用

从字面上看,我没有发现任何可以提供帮助的谷歌搜索。即使对于 py2exe,但我想使用 pyinstaller。

我的问题是模块(pymunk [aka Chipmunk])未完全包含在 exe 构建中。它可能缺少某种 dll。基本上它缺少一个我不知道如何解决的依赖项。

Chipmunk 库是通过 ctypes 模块包装的,因此只要这些消息来自 Chipmunk,它就假定它正在被编译。从 Python 的角度来看,这对我没有帮助。也许不吧。

谁能告诉我如何修复 pyinstaller 的这种依赖关系?

0 投票
2 回答
255 浏览

c++ - 将一组指针投射到其他对象?

我正在尝试将一组对象发送到我的 c 库。

我要发送的对象是一个 pymunk Body。它有一个嵌入其中的指针对象Body._body。我能够将一个单一的传递给我的函数,并使用 Chipmunk 函数提取我想要的任何东西。我cpBodyGetMass只是用作测试,并且有效。

如果我制作这些数组。唯一有效的是第一个。

我希望能够将Body._body地址作为数组发送到我的 dll。我想我可以将指针存储在一个c_intc_long数组中,并将这些地址转换为cpBodyChipmunk 想要的地址。

这是我的自定义功能

我的 C++ 没有 python 包装,所以我只能发送 C 对象。我一直这样做的方式是...

现在,如果我发送一个指针数组。基本上是一个 4 字节整数的数组。cpBody body[]假设它必须以字节为单位跳转到数组中的 sizeof(cpBody) 才能到达下一个对象。但他们不是内联的。它是指向所有主体的随机指针列表。我需要它来读取每个数组元素中的地址,并让它假设cpBody在那个位置有一个。

如果你看第二个例子。我通过单个指针发送了一个数组。我需要发送一个指向指针数组的指针并从每个指针中获取 cpBody。这意味着我需要数组只跳转 4 个字节并将内存地址读取为cpBody.

0 投票
1 回答
274 浏览

python - Pymunk - 查找身体的相关形状和约束

我试图找到某种方法来迭代依赖于 pymunk 中特定主体的约束。在 Chipmunk 中似乎有多种方法可以做到这一点,但我在 pymunk 中找不到等价物。我希望看到一些方法来检测约束,这样我就不必手动跟踪所有约束。

我还想看看一种检测与身体相关的形状的方法。一般来说,当我从空间中移除身体时,我希望能够自动移除身体的形状和约束。那可能吗?

0 投票
1 回答
1107 浏览

python - pymunk space.remove 方法出错

我有一个球生成器,它“生成”并将球(圆圈)添加到模拟中。

当球击中 list 中的静态 poly 时,球将被移除s_boxes
这是由碰撞处理程序完成的ball_wall_collision

错误:
以下弹出窗口按其名称显示,它弹出
**弹出窗口**

我的代码:
球发生器

碰撞处理程序

我在碰撞处理中做错了什么?

  • 我在通话中遗漏了什么space.remove吗?
  • 该功能没有按我的意愿工作吗?或者是其他地方的错误(我认为不是)......
0 投票
1 回答
1007 浏览

python - 如何在 pymunk 中制作“复合”形状?

正如标题所说,我怎样才能加入/约束 2 个 pymunk 身体/形状,使它们不充当一个单一的对象?
例如,在这种情况下,我有一个板球拍,由 2 个独立的主体和多边形组成。
我想将蝙蝠的“手柄”连接到我的蝙蝠的“刀片”上,这样我就得到了一个类似蝙蝠的物体。

我的代码:


=============变成================> 开始结尾
我有一个函数可以在身体位置绘制那些绿色圆圈

0 投票
1 回答
357 浏览

python - Pymunk Segment trouble?

I'm using Pymunk 3.0.0 on a Raspberry Pi running Debian Wheezy 7.0. When I try making a shape using the 'pymunk.Segment' function I end up with only the first line of the polygon. The same happens in both the Flipper and BouncingBalls demos so I'm fairly sure it's not my code.

For instance...

...would only create the line from 150,100 to 50,550 and not the other 4.

And when I try to draw the lines using PyGame then first line is drawn okay but the rest are just a very short, thin line at the body's location.

As this happens in the examples I'm assuming it's a bug with Pymunk/Chipmunk/Linux but can't find anything on Google.

Any help much appreciated (noob btw)

Dave.

0 投票
1 回答
98 浏览

python - 为什么 pymunk 会终止?

这个简单的pymunk代码给我带来了问题:

上面的代码创建了一个如下所示的对话框

错误对话框

为什么会发生这种情况,我该如何解决?

0 投票
0 回答
118 浏览

python - Pymunk 内存泄漏和/或挂起

我一直在用 Python 编写一个游戏,该游戏需要能够从物理引擎中添加和删除大量对象。在极端的测试场景中,我可以用完内存是几秒钟。在正常情况下,它需要一段时间才能积累。经过两天的工作,我发现了一个小测试场景,它可以准确显示正在发生的事情。我的平台是 Windows 7 64x。

所以,如果你玩一点。曾经有一段时间,它没有挂起,并且会超出记忆。但目前它挂在删除形状上。形状删除都不会做任何事情。我的游戏从不挂起,只是吞噬内存。

在每隔几秒对每个循环进行 200 次测试时,它会从 50mb 开始“跳跃”50mbs,并在 300mb 左右结束(对我来说)。我想我可能只是在运行垃圾收集器,但大量对象进出只是出血内存,即使只是一次。I 让程序在不添加或删除对象的情况下运行。没有内存被回收。

每个循环只添加和删除一个对象没有泄漏,并且运行在非常低且恒定的内存上。

我发现 pymunk 不会泄漏但应用该方法无法解决任何问题的情况。(较慢的添加和删除或不使用 add(list) 和 remove(list)。) Pymunk 本身一个对象不会泄漏。在我的游戏中一次一个对象是。

我已经尽我所能找到任何杂散的引用或引用循环。此示例显示没有太多复杂的引用,并且存在内存回收问题。

任何输入将不胜感激?

附加信息:以 60 fps 的速度每帧添加和删除 1 个对象会使内存以每秒 3 mbs 左右的速度攀升。我的引擎在一个单独的线程中,直到我发现这不是问题所在。同步运行仍然泄漏。