- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
使用 python 2.7 尝试以下代码。基本上它是一个卡在一根杆子上的圆圈和一个苹果,你可以通过按空格键来击中它。还有一个正方形。
import time
import pygame
import pymunk
import pymunk.pygame_util
import sys
pygame.init()
screen = pygame.display.set_mode((800, 600))
clock = pygame.time.Clock()
space = pymunk.Space()
space.gravity = 0, -1000
ball_body = pymunk.Body(100, 100)
ball_body.position = 400.0, 300.0
ball_body.angular_velocity = 10.0
ball_shape = pymunk.Circle(ball_body, 15)
ball_shape.friction = 0.5
ball_shape.elasticity = 0.9
ball_shape.color = (0,0,0,0)
space.add(ball_body, ball_shape)
static_lines = [pymunk.Segment(space.static_body, (20,20), (780,20), 2),
pymunk.Segment(space.static_body, (20,580), (780,580), 2),
pymunk.Segment(space.static_body, (20,20), (20,580), 2),
pymunk.Segment(space.static_body, (780,20), (780,580), 2)]
for static_line in static_lines:
static_line.color = (255,255,255)
static_line.elasticity = 0.9
static_line.friction = 1
space.add(static_lines)
i = 0
prev_body = pymunk.Body(10, 10000)
prev_body.position = (300, 580)
chain_fix_point = pymunk.Body()
chain_fix_point.position = (300, prev_body.position[1])
# Another
i = 0
prev_body = pymunk.Body(10, 10000)
prev_body.position = (600, 580)
chain_fix_point = pymunk.Body()
chain_fix_point.position = (600, prev_body.position[1])
while i < 20:
# rotation_center_body = pymunk.Body()
# rotation_center_body.position = (400, prev_body.position[1] - 20)
body = pymunk.Body(1, 1)
body.position = (600, prev_body.position[1] - 10)
line = pymunk.Circle(body, 5)
line.elasticity = 0
line.friction = 1
if i == 0:
rotation_center_joint = pymunk.PinJoint(body, chain_fix_point)
else:
rotation_center_joint = pymunk.PinJoint(body, prev_body)
space.add(line, body, rotation_center_joint)
prev_body = body
i += 1
blob_body = pymunk.Body(5, 1)
blob_body.position = prev_body.position[0], prev_body.position[1] - 40
blob_shape = pymunk.Circle(blob_body, 20)
rotation_center_joint = pymunk.SlideJoint(blob_body, prev_body,(0,0),(0,0),0,40)
space.add(blob_body, blob_shape, rotation_center_joint)
appleimg = pygame.image.load('apple.png')
box_body = pymunk.Body(10,10000)
box_body.position = 600, 300
box_vertices = [(570, 270),(570, 330),(630,330),(630,270)]
box_shape = pymunk.Poly(box_body, box_vertices, offset=(0, 0), radius=1).create_box(box_body, size = (60,60))
box_shape.friction = 0.5
box_shape.elasticity = 0.9
box_shape.color = (255,0,0)
space.add(box_body, box_shape)
def main():
running = True
angle = 0;
while running == True:
print "game loop"
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_SPACE:
ball_body.apply_impulse(j = (100000, 100000))
screen.fill((0,0,0))
pymunk.pygame_util.draw(screen, space)
if ball_body.angle != 0:
angle += ball_body.angular_velocity
img = pygame.transform.rotate(appleimg, angle)
screen.blit(img, (ball_body.position[0] - 20, 580 - ball_body.position[1]))
pygame.display.flip()
clock.tick(60)
space.step(1/60)
pygame.quit()
quit()
main()
游戏循环运行,但位置未更新。
这段代码在 python 3.5 上运行得很好。但是当我切换到 2.7 时,它失败了。
最佳答案
问题是,在 python 2.x 中,当调用 step 函数时,将 1 除以 60 时,会得到 0,因为/在 2.x 中进行整数除法。
您可以通过导入 python 3 分区来解决此问题来自 __future__ 导入部门
或者您可以除以 float 1/60.0
查看此问题以获取更多信息:In Python 2, what is the difference between '/' and '//' when used for division?
关于python - Pymunk Pygame 对象位置不更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34237001/
我使用此代码的目的是使用 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 连接在一起。如果可能的话,我想让关节不可见 - 有什么办法可以做到这一点吗?现在关节在
我是一名优秀的程序员,十分优秀!