问题标签 [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.
python - 如何在 pymunk 中处理运动方程并在 pymunk 中绘制它们?
在其中运行运动方程pymunk
非常容易,但是一旦我必须在窗口中绘制它,我就会有点困惑。您将如何在运行运动方程的程序部分中建立一个简单的运动方程(x position
例如,力线性取决于),同时用物体的位置和形状更新窗口?@window.event
python - 如何在 pyglet 中使用调度函数为变量赋值?
使用以下代码
我的回报只是一遍又一遍地 1.0。我希望每次调用都会更新该值。我错过了什么?
python - Pymunk - 在每个时间点设置位置并且没有碰撞
我正在使用 pymunk 来模拟身体移动。因为我希望身体以某种方式移动,所以我在每个时间点都设置它们的位置(我知道这不推荐用于 Chipmunk/Pymunk)。这样做可以为单个物体移动提供良好的结果,但问题是当我这样做时,物体似乎不再能够检测到碰撞,它们只是相互穿过而不是碰撞。我曾尝试使时间步长更小,但这似乎没有帮助。有没有人对我如何解决这个问题有任何提示,或者考虑到我在每个时间点都设置位置,这是不可避免的吗?
谢谢。
编辑显示示例代码:
所以我在每个时间步都设置位置和角度:
我希望能够做到这一点,因为我有矩形主体,并且此代码允许矩形沿它们的长轴移动,并且它仅适用于一个主体,但是当我有多个主体时,我也希望碰撞起作用,这似乎让他们根本不工作(或者如果他们在工作,他们工作得非常糟糕)。
pymunk - pymunk - 跳闸段
我正在尝试执行以下操作:
垂直线段(有质量)在地面上向前移动(@固定速度)(无摩擦),在地面上的一个点(岩石)上绊倒。我正在寻找与地面接触的线段点以停止向前的速度并使线段翻过该点,同时考虑到均匀分布的质量的动量守恒。
老实说,我已经尝试了几个小时试图弄清楚这一点。我得到的壁橱是一个碰撞,但该段没有倾斜,整个事情只是立即停止,段的顶部慢慢开始向后倾斜。
任何帮助,将不胜感激。
python - 如何使用 pymunk 的碰撞处理程序调用函数?
我正在尝试实现一个人工智能来解决一个简单的任务:从 A 移动到 B,同时避开障碍物。
到目前为止,我使用pymunk
并pygame
构建了环境,并且效果很好。但现在我面临下一步:为了获得强化学习算法的奖励,我需要检测玩家与墙壁之间的碰撞。或者只是在撞到墙壁/障碍物时重新启动环境。
设置c_handler.begin
函数等于Game.restart
函数帮助我打印出玩家实际击中了什么东西。
但除了print()
我无法访问与玩家位置有关的任何其他功能,我真的不知道下一步该做什么。
那么如何使用 pymunk 碰撞重启环境呢?还是有其他方法可以重置甚至其他库来构建适当的环境?
pymunk - 分组(无碰撞),在pymunk中添加和删除多个物体和多边形?
我正在使用 pymunk index_video中的代码创建一个通用函数,该函数创建多个相互比赛的汽车,如果它们到达屏幕的右端,它们将从空间中删除并在屏幕的左端重新生成。
问题是,在示例代码中,汽车的每个部分(底盘、销接头、电机、车轮)都分别添加到 Space 中。我想将整个汽车视为一个单独的物体,我可以通过将整个车身的引用存储在一个列表中来跟踪其坐标,并轻松地将其添加或删除到空间中。
此外,如果车轮离底盘太近,它们会相互碰撞。我认为使用ShapeFilter可以帮助避免此类碰撞,但为此我需要将汽车的所有部分作为一个整体。
请多多包涵。我对这个行话完全陌生。
python - 使用 Pymunk 和 Pygame 进行横向滚动。如何移动相机/视口以仅查看世界的一部分?
从 pymunk 示例中,我看到 pymunk 坐标和 pygame 坐标之间存在差异。此外,pymunk 仅用于 2D 物理,而 pygame 用于在屏幕上渲染对象/精灵。
所以在寻找如何构建一个摄像机跟随玩家的环境时,人们(包括我)最终会感到困惑。我已经在这里、这里、这里和这里看到了示例(甚至对没有人回答这个问题感到惊讶),但考虑到与同一主题相关的问题被反复询问的数量,老实说,我觉得答案并不能充分解释这个概念和要求向社区展示最简单的示例,其中所有代码都带有注释。
我曾在 OGRE 和 OSG 等 3D 环境中工作,其中相机是一个可以用视锥体定义的适当概念,但我很惊讶 2D 世界没有预定义的功能。所以:
如果不在 pymunk 或 pygame 的官方教程中,至少可以提供一个简单的示例(以 pymunk 身体作为玩家,世界上很少有 pymunk 身体)作为答案,其中玩家在 2D pymunk+ 中移动pygame 世界和相机跟随玩家?
pymunk - 在 Pymunk 相机窗口世界中创建和更新对象的正确方法?
我询问了如何获得 Pymunk+Pygame 世界的相机窗口视图,虽然我收到了一个慷慨解释的答案,但我不相信,因为该人使用 Pygame Surface 进行 blit。API 说 Surface旨在表示图像,从处理和渲染的角度来看,我觉得这是渲染 Pymunk 对象的一种低效方式,尤其是当它们是运动学时 。
因此,我尝试修改其中一个 Pymunk 示例(我在任何我进行更改的地方都评论了“ Nav added ”)以在按下箭头键时围绕球和静态线移动。它创造了一种相机般的效果。但是当我使用箭头键将对象向右移动时,甚至鼠标坐标似乎也随之移动。
我以为问题出在 line p = event.pos[X]+cameraX, flipy(event.pos[Y])+cameraY
,但即使将其更改为p = event.pos[X], flipy(event.pos[Y])
,问题仍然存在。
通过在每一帧中移动所有球和静态线位置,我是否在做正确的事情?我认为一种更有效的方法是每帧都移动它们,但只绘制在屏幕范围内的那些?
另一方面,在下面的示例中,静态行是在运行循环之前添加的,这让我想知道在这种情况下实现相机的正确方法是什么。也许除了使用 Surface 之外,我别无选择。
总而言之,我正在尝试创建一个比下图(典型的马里奥式世界)更大的世界,其中虚线的矩形区域在整个计算机显示器上对用户是可见的,并且显示了一些状态文本在该地区的角落。虚线之外的任何世界部分都在显示器的视野之外。
我想知道的是创建这样一个相机视图的正确方法,向这个世界添加静态和运动对象并在鼠标点击和键盘输入与屏幕的可见区域相关时更新它们。这变得令人困惑,因为 Pygame 和 Pymunk 有不同的绘制和更新元素的方式。一个明显的例子将是对社区的巨大帮助。
此外,如果它是多人游戏,则可能需要为通过 LAN 连接查看同一世界的其他人(蜘蛛)提供单独的视图区域。
python - How to rotate pymunk joints at will?
I'm trying to create a walking spider like this:
I considered using a SimpleMotor
at the pink and red joints and control them using the rate
function. But when I tried, I get an error that the function is not callable.
I don't see any other functions in the pymunk API that allow controlling the joints at will. Is there really no function or am I missing something?
Basically in the run loop I want to specify rotations to the joints at certain points of time, to not just make the spider walk, but to eventually be able to use Neural Networks to allow it to experiment with various configurations of leg positions and figure out which ones can make it walk:
Is it possible at all to achieve such a level of control over joints using Pymunk? To be able to stop moving the legs (without needing to put the body to sleep), or to rotate the leg joints to whatever angle the spider 'wishes to' at any point in time? Sample code would be a great help.