|
|
|
|
@ -40,14 +40,19 @@ class Player:
|
|
|
|
|
self.rect.y += self.velocity_y
|
|
|
|
|
self.on_ground = False # zurücksetzen
|
|
|
|
|
|
|
|
|
|
# Plattform-Kollision prüfen
|
|
|
|
|
for obs in obstacles:
|
|
|
|
|
if self.rect.colliderect(obs.get_rect()):
|
|
|
|
|
# nur wenn Spieler von oben kommt
|
|
|
|
|
if self.velocity_y > 0 and self.rect.bottom <= obs.get_rect().top + 20:
|
|
|
|
|
# Prüfen: Spieler kommt von oben und fällt drauf
|
|
|
|
|
if self.velocity_y > 0 and self.rect.bottom <= obs.get_rect().top + 10:
|
|
|
|
|
self.rect.bottom = obs.get_rect().top
|
|
|
|
|
self.velocity_y = 0
|
|
|
|
|
self.on_ground = True
|
|
|
|
|
else:
|
|
|
|
|
# Seitliche Kollision
|
|
|
|
|
if self.rect.right > obs.get_rect().left and self.rect.left < obs.get_rect().left:
|
|
|
|
|
self.rect.right = obs.get_rect().left
|
|
|
|
|
elif self.rect.left < obs.get_rect().right and self.rect.right > obs.get_rect().right:
|
|
|
|
|
self.rect.left = obs.get_rect().right
|
|
|
|
|
|
|
|
|
|
# Boden-Kollision
|
|
|
|
|
if self.rect.bottom >= ground_y:
|
|
|
|
|
|