Python 雪碧不停地上下摇晃

Python 雪碧不停地上下摇晃,python,pygame,collision-detection,Python,Pygame,Collision Detection,我已经在我的比赛中运用了重力,它一直在拉着我的球员。然而,当我的球员站在平台上时,他总是上下摇晃。我怎样才能解决这个问题 PLAYER_ACC = 0.65 PLAYER_FRICTION = -0.12 PLAYER_GRAVITY = 0. class Player(pg.sprite.Sprite): def __init__(self, game, x, y): self.pos = vec(WIDTH / 2, HEIGHT / 2) self

我已经在我的比赛中运用了重力,它一直在拉着我的球员。然而,当我的球员站在平台上时,他总是上下摇晃。我怎样才能解决这个问题

PLAYER_ACC = 0.65
PLAYER_FRICTION = -0.12
PLAYER_GRAVITY = 0.

class Player(pg.sprite.Sprite):
    def __init__(self, game, x, y):
        self.pos = vec(WIDTH / 2, HEIGHT / 2)
        self.vel = vec(0, 0)
        self.acc = vec(0, 0

    def collision_with_walls(self):
        collision = pg.sprite.spritecollide(self, self.game.walls, False)
        if collision:
            self.pos.y = collision[0].rect.top
            self.vel.y = 0

    def update(self):
        self.acc.x += self.vel.x * PLAYER_FRICTION
        self.vel += self.acc
        self.pos += self.vel + 0.5 * self.acc
        self.collision_with_walls()

        self.rect.midbottom = self.pos

感谢所有/任何帮助

为什么选择
collision
(在
collision\u-with-walls(self)
)中的第一个元素?你是什么意思?我假设@clabe45指的是这个索引移动:
collision[0]
@patrick是的,为什么选择
collision[0]
而不是
collision[1]
collision[2]
?这是因为在Python中,我们从0开始计算,而不是从1开始。”“碰撞[0]”意味着我们的精灵会先与第一个物体碰撞,然后再与之碰撞。为什么在
collision
(在
collision\u with_walls(self)
)中选择第一个元素?你是什么意思?我假设@clabe45指的是这个索引移动:
collision[0]
@patrick是的,为什么
collision[0]
与冲突[1]或冲突[2]相反?这是因为在Python中,我们从0开始计数,而不是从1开始“碰撞[0]”意味着我们的精灵将与第一个物体碰撞,然后与第一个物体碰撞。