Я сделал 2D платформерную игру с pygame.Я изо всех сил пытаюсь выяснить, как определить направление движения объекта.
Например: скажем, игрок идет сверху, так как его скорость у больше нуля, тогда проблема в том, что его гравитациядействуя на него постоянно;это означает, что если он идет с левой стороны, его скорость у больше нуля (так что это, если оператор сработает, даже если я хочу, чтобы оператор с левой стороны, если сработал).
Источниккод для этого следующий: `
if self.hits:
for platform in self.hits:
if self.player.vel.y > 0:
self.player.rect.y = platform.rect.top
self.player.vel.y = 0
if self.player.vel.y < 0:
self.player.rect.top = platform.rect.bottom
self.player.vel.y = 0
if self.player.vel.x > 0:
self.player.rect.right = platform.rect.left
if self.player.vel.y < 0:
self.player.rect.left = platform.rect.right
Вот почему я создал некоторые ограничения для распознавания каждого из четырех направлений:`
if self.hits:
for platform in self.hits:
if self.player.rect.bottom >= (platform.rect.top) and self.player.rect.bottom <= (platform.rect.top + 16)\
and (self.player.rect.centerx + 13) >= platform.rect.left and (self.player.rect.centerx - 13) <= platform.rect.right:
self.player.pos_bottom.y = platform.rect.top
self.player.vel.y = 0
elif self.player.rect.top <= (platform.rect.bottom) and self.player.rect.top >= (platform.rect.bottom - 16)\
and (self.player.rect.centerx + 13) >= platform.rect.left and (self.player.rect.centerx - 13) <= platform.rect.right:
self.player.rect.top = platform.rect.bottom
self.player.vel.y = 0
elif self.player.rect.right >= (platform.rect.left) and self.player.rect.right <= (platform.rect.right + 10) and self.player.vel.x >= 0\
and self.player.rect.centery >= platform.rect.top and self.player.rect.centery <= platform.rect.bottom:
self.player.rect.right = platform.rect.left
self.player.vel.x = 0
elif self.player.rect.left <= (platform.rect.right) and self.player.rect.left >= (platform.rect.right - 10) and self.player.vel.x <= 0\
and self.player.rect.centery >= platform.rect.top and self.player.rect.centery <= platform.rect.bottom:
self.player.rect.left = platform.rect.right
self.player.vel.x = 0`
Этот код ограничивает зону, в которойНаправление игроков становится узнаваемым, но в нем есть много ошибок, а также оно ужасно.