为什么重力在 Pymunk 中不起作用?

Why is the gravity not working in Pymunk?

我想学习 pymunk,但由于某种原因,引力不起作用。我看了很多教程,甚至逐字逐句地学习,但我的重力始终不起作用。这是我在主游戏中使用的代码,我在这里坐了几个小时思考可能出了什么问题,但我仍然找不到它。

factory_items=[]
space=pymunk.Space()
space.gravity=(0,100)
class factory_item():
    def __init__(self):
        self.image=apple
        self.image=pygame.transform.scale(self.image,(100,100))
        self.body=pymunk.Body(1,100,body_type=pymunk.Body.DYNAMIC)
        self.body.pos=(random.randrange(0,401),0)
        self.shape=pymunk.Circle(self.body,50)
        space.add(self.body,self.shape)
    def update(self):
        win.blit(self.image,(self.body.pos[0]+scrollx,self.body.pos[1]))

正在生成苹果,但没有掉下来。

    if timer>0.5:
        timer=0
        var=factory_item()
        factory_items.append(var)

    for i in factory_items:
        i.update()

    space.step(1/50)

您似乎使用了错误的 属性 到 set/get 身体位置。 Pymunk Body 的位置 属性 称为 position。您可以在此处查看该职位(以及 Pymunk 中的所有其他内容)的完整 API 文档:http://www.pymunk.org/en/latest/pymunk.html#pymunk.Body.position

因此,尝试按以下方式更改您的代码:

self.body.pos=(random.randrange(0,401),0)
# should be 
self.body.position=(random.randrange(0,401),0)
# and 
win.blit(self.image,(self.body.pos[0]+scrollx,self.body.pos[1]))
# should be
win.blit(self.image,(self.body.position[0]+scrollx,self.body.position[1]))

如果它仍然不起作用,你可以尝试 post 你的完整代码(最好是我们可以 运行,但同时不要太长)在你的问题中,比如 import random写在评论里。