Ich habe nur Informationen über Kollisionen mit Wänden hier gesehen, aber ich habe ein Problem damit, den Spieler seinen Kopf an der Decke "stoßen". Anstatt auf den Kopf zu treffen, wird die Geschwindigkeit auf 0 gesetzt und sie wird aufgrund der Schwerkraft wieder beschleunigt, und das Objekt wird oben auf der Plattform darüber abgesaugt. Warum funktioniert das nicht und wie kann ich es reparieren? Ich folge einem Tutorial und halte mich an meine eigene Anpassung und der Verfasser des Inhalts sagte, dass es schwer zu implementieren wäre. Anscheinend kann es auch einen Fehler geben, wenn Sie diagonal kollidieren? (entsprechend dem Ersteller des Inhalts)pygame Kollision mit der Decke?
Vielen Dank im Voraus, Lehrer will, dass ich etwas vor Leuten in nur ein paar Tagen ohne Erfahrung mit irgendeiner Art von Game-Engine zu präsentieren.
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/ könnte etwas Hilfe haben – depperm
So tun Sie 'self.player.vel.y = 0 'in Ihrem wenn Aussagen, aber wird dieser Wert jemals anderswo verändert? Wenn dies nicht der Fall ist, wird keine Ihrer if-Aussagen wahr sein, so dass sich nichts ändert. – numbermaniac
Ich habe eine Spieler-Klasse, die Dinge wie Geschwindigkeit und Beschleunigung hat, Bewegung funktioniert und ich kann ontop von Dingen landen (erste if-Anweisung funktioniert), ich kann es einfach nicht erreichen, um das Ende der Rechteck-Hitbox zu erreichen und zu stoppen. Das Problem besteht nicht in der Geschwindigkeit, sondern eher in der Platzierung des Players, sobald die Kollision passiert ist. Kann es immer noch nicht herausfinden. –