- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在尝试检测从玩家位置开始的线段上的第一个形状,但我不想检测玩家。
在以前版本的 pymunk 中,pymunk.Space.segment_query_first 函数接受一个整数作为 shape_filter,它只检测该整数组内的形状。效果很好,但现在它接受列表或字典。我试过将整数放入列表中,但没有用。我不知道字典想要什么。我已经尝试了我能想到的一切。似乎没有什么能阻止它检测我的播放器。该文档根本没有帮助。提前致谢。
最佳答案
是的,形状过滤器在 pymunk 5 中变得更强大(因此也更复杂一点)。形状过滤器应该是 ShapeFilter
对象(但是。有关此过滤器对象的详细信息,请参阅 api 文档 http://www.pymunk.org/en/latest/pymunk.html#pymunk.ShapeFilter。
ShapeFilter
有 3 个属性:categories
、mask
和 group
。在您的情况下,我认为您想将播放器放在一个单独的类别中,并将其从过滤器查询中屏蔽掉。 (默认情况下,形状过滤器对象匹配所有类别并且不会屏蔽任何内容)。
所以,你想在这个例子中做一些事情:
>>> import pymunk
>>> s = pymunk.Space()
>>> player_b = pymunk.Body(1,1)
>>> player_c = pymunk.Circle(player_b, 10)
>>> s.add(player_b, player_c)
>>>
>>> player_c.filter = pymunk.ShapeFilter(categories=0x1)
>>> s.point_query_nearest((0,0), 0, pymunk.ShapeFilter())
PointQueryInfo(shape=<pymunk.shapes.Circle object at 0x03C07F30>, point=Vec2d(nan, nan), distance=-10.0, gradient=Vec2d(0.0, 1.0))
>>> s.point_query_nearest((0,0), 0, pymunk.ShapeFilter(mask=pymunk.ShapeFilter.ALL_MASKS ^ 0x1))
>>>
>>> other_b = pymunk.Body(1,1)
>>> other_c = pymunk.Circle(other_b, 10)
>>> s.add(other_b, other_c)
>>>
>>> s.point_query_nearest((0,0), 0, pymunk.ShapeFilter(mask=pymunk.ShapeFilter.ALL_MASKS ^ 0x1))
PointQueryInfo(shape=<pymunk.shapes.Circle object at 0x03C070F0>, point=Vec2d(nan, nan), distance=-10.0, gradient=Vec2d(0.0, 1.0))
test_space.py
文件中有测试形状过滤器的不同组合的测试,这可能有助于解释它们的工作原理:https://github.com/viblo/pymunk/blob/master/tests/test_space.py#L175
关于python - pymunk 更新了形状过滤器的使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39628923/
我使用此代码的目的是使用 pygame 演示落在 pymunk 中的矩形。 import pymunk import pygame pygame.init() screen = pygame.disp
我试图找到一些方法来迭代依赖于 pymunk 中特定主体的约束。在 Chipmunk 中似乎有多种方法可以做到这一点,但我在 pymunk 中找不到等效的方法。我希望看到一些检测约束的方法,这样我就不
我正在使用 pymunk 制作一个 pong 克隆,以了解该库的工作原理。我让球正确地从墙上弹起,但 Racket 仍然拒绝停留在由段定义的矩形内,在屏幕的每一侧都有一个。 def handle_in
我正在尝试检测从玩家位置开始的线段上的第一个形状,但我不想检测玩家。 在以前版本的 pymunk 中,pymunk.Space.segment_query_first 函数接受一个整数作为 shape
pymunk 文档写道,场景的重力“默认为 (0,0)。可以通过编写自定义集成函数在每个主体的基础上进行覆盖。”您将如何编写自定义集成函数来更改对象的重力(例如,如果梯子上有一个对象,我希望其重力为
对项目进行一些模拟。 我的问题是物体的阻尼值是否与 pymunk 空间的阻尼值复合(如果有的话)? 例如,如果我有一个 pymunk 空间 SPACE,其中 SPACE.damping = 0.9,然
我想创建一个弹球游戏,但球有时不会与其他物体碰撞。示例:https://youtu.be/HwSXwJ4-d2w 这是代码 import pyglet, pymunk from pymunk.pygl
我正在尝试使用 pymunk 和 pyglet 创建形状。但是我面临一个问题,我无法更改 pymunk 形状的颜色。他们没有任何这样的属性。 我已经在 pymunk.pyglet_utils.Draw
在 Pymunk 中,您可以设置重力以使对象向左或向右 (x) 和向上或向下移动。 (y) 我想改变重力,使物体聚集在中心,有点像质心。有没有可能的方法来做到这一点? 最佳答案 没有内置的方法来“移动
最近我一直在尝试用 pymunk 制作一个简单的游戏。我的目标(目前)是让盒子受到重力影响,并在调用 up() 函数时“跳跃”。 这是我的代码。 import pygame from pygame.l
我正在尝试在 pymunk 中设置运动体的速度,但我真的不知道我需要输入什么或什么值,如果有人可以向我解释它,我会非常高兴。 这就是我所做的 - part_body = pymunk.Body(1,
我的问题相当简单:有没有一种方法或解决方法可以在 pymunk 中实现静态和动态摩擦? 我理解这个问题很困难,但相信有人可以在 pymunk 中解决这个问题。 谢谢! 最佳答案 您可以操纵将在 pre
我想实现一个代码,它具有与碰撞对象的非碰撞对。我的对是 2 个相互连接的球。我希望那些 2 对球发生碰撞。但是我不希望这两个球与其他对碰撞。 如何在 pymunk ShapeFilter 中实现包含这
这个简单的 pymunk 代码给我带来了问题: space = pm.Space() b = pm.Body() b.position = 400,400 c = pm.Circle(b,10) sp
为什么以下 Pymunk 示例中的物理错误? from __future__ import print_function import sys from math import pi import p
我正在尝试实现一个人工智能来解决一个简单的任务:从 A 移动到 B,同时避开障碍物。 到目前为止,我使用 pymunk 和 pygame 来构建环境,效果非常好。但现在我面临下一步:为了获得强化学习算
使用 python 2.7 尝试以下代码。基本上它是一个卡在一根杆子上的圆圈和一个苹果,你可以通过按空格键来击中它。还有一个正方形。 import time import pygame import
我有一个圆圈,上面有一个框: 圆圈是一个简单的马达。我希望盒子直接位于圆圈上方。我尝试过不同的约束,但我的大部分尝试都会导致盒子翻到一边。 我最成功的尝试是将盒子的 body.moment 设置为 p
我正在尝试创建一个带有振荡弦和质量的钟摆,预计会振荡一段时间然后停止。从我写的来看,质量无法停止振荡。请帮助我。 import pyglet import pymunk imp
我正在使用 pymunk 和 pygame 开发一个项目。我正在使用 PivotJoint 约束将我的 body 连接在一起。如果可能的话,我想让关节不可见 - 有什么办法可以做到这一点吗?现在关节在
我是一名优秀的程序员,十分优秀!