2017-08-18 3 views
0

Ich erstelle ein Spiel, in dem der Charakter des Spielers immer in der Mitte des Bildschirms bleibt und die umliegenden Wände die Position wechseln, wie viele Top-Down-Spiele.Pygame Kollision mit statischen Spieler

Mein Problem ist, dass ich eine Liste der Wände pygame.Rects habe, aber ich kann keinen Weg finden, die Kollisionen korrekt mit dem statischen Spieler zu machen. Ich habe Variablen wie diese

walls = [pygame.Rect([0, 0, 20, 20]), ...] 
player = pygame.Rect([100, 100, 20, 20]) 

wo Wände enthält alle Wände der aktuellen Ebene. Wie schaffe ich es, wenn der Spieler mit einem dieser Rekruten kollidiert, passt er sich richtig an und stoppt auch alle anderen Wände. Die Position der Spieler rect ändert sich nie und muss daher immer [100, 100] sein, aber die Position der Wände ändert sich.

+0

https://stackoverflow.com/questions/31022269/collision-detection-between-two-rectangles-in-java sollte leicht zu python zu übersetzen – user3080953

+0

@ user3080953 Pygame hat Kollisionslogik eingebaut. – SwiftsNamesake

Antwort

2

Bewegen Sie nicht die Wände. Bewege den Spieler. Wenn Sie dann alle Ihre Spielobjekte zeichnen, subtrahieren Sie einfach die Koordinaten des Spielers und addieren Sie (100, 100), um dem Spieler das Aussehen zu geben, dass er sich nicht bewegt. Ihr Spielmodell sollte immer den tatsächlichen Zustand Ihres Spiels repräsentieren, und Rendering-Überlegungen sollten im Allgemeinen nur zur Renderzeit erfolgen. .