Невозможно исправить ошибку столкновения в pygame - PullRequest
1 голос
/ 11 июля 2020

Я пытаюсь научиться использовать спрайты и прямоугольники в pygame, и я сделал простую программу, в которой игрок может стоять на платформе. Но когда он находится под платформой и прыгает, он проходит через платформу, а когда он начинает go обратно вниз, он внезапно перемещается к вершине платформы, которой коснулся. Я хочу сделать так, чтобы игрок, прыгая ниже платформы, сталкивался с ней, а не go через.

Вот код в классе игры, который заставляет игрока сталкиваться с платформой

def update(self):
  self.all_sprites.update()
    
  hits = pg.sprite.spritecollide(self.player, self.platforms, False)
  if self.player.vel.y > 0:
    if hits:
      self.player.pos.y = hits[0].rect.top + 0.5 #le joueur se retrouve sur l'objet percuté
      self.player.vel.y = 0

Вот код в классе игрока, который заставляет его прыгать

def jump(self):
  self.rect.y += 1
  hits = pg.sprite.spritecollide(self, self.game.platforms, False)
  self.rect.y -= 1
  if hits:
    self.vel.y = -10

1 Ответ

0 голосов
/ 12 июля 2020

Я думаю, проблема может быть в используемой вами функции столкновения. Если платформа не является спрайтом, а представляет собой отдельную поверхность, я бы посоветовал использовать pygame.sprite.spritecollideany(). Документацию о различных типах столкновений можно найти здесь: https://www.pygame.org/docs/ref/sprite.html

...