Я только видел информацию о столкновениях со стенами здесь, но у меня возникла проблема, заключающаяся в том, что игрок «ударился» головой о потолок. Вместо того, чтобы ударить головой, скорость устанавливается равной 0 и она ускоряется назад из-за силы тяжести, объект становится втянутым вверх по платформе над ней. Почему это не работает и как я могу это исправить? Я следую учебнику и заканчиваю свою собственную адаптацию, и создатель контента сказал, что его будет сложно реализовать. Очевидно, также может возникнуть ошибка, если вы столкнетесь по диагонали? (в соответствии с создателем контента)столкновение с пигмеем с потолком?
Большое вам спасибо, учитель хочет, чтобы я создал что-то, чтобы представить infront людей всего за пару дней без опыта работы с каким-либо игровым движком.
def update(self):
# Game Loop - Update
self.all_sprites.update()
# check if player hits a platform
hits = pygame.sprite.spritecollide(self.player,self.platforms , False)
if self.player.vel.y > 0:
if hits:
self.player.pos.y = hits[0].rect.top
self.player.vel.y = 0
if self.player.vel.y < 0:
if hits:
self.player.rect.top = hits[0].rect.bottom
self.player.vel.y = 0
http://gamedev.stackexchange.com/ может иметь некоторую помощь – depperm
Так вы 'self.player.vel.y = 0 'в вашем случае но это значение когда-либо изменилось в другом месте? Если это не так, ни одно из ваших утверждений if не будет истинным, поэтому ничего не изменится. – numbermaniac
У меня есть класс игрока, который имеет такие вещи, как скорость и ускорение, движение работает, и я могу приземлиться на вершину вещей (сначала, если оператор работает), я просто не могу заставить его ударить по нижней части прямоугольника hitbox и остановиться. Речь идет не о скорости, но тем более о размещении игрока после столкновения. Все еще не могу понять. –