2017-08-18 35 views
0

我正在創建一個遊戲,其中玩家角色始終停留在屏幕中央,周圍的牆壁改變位置,就像很多自上而下的遊戲一樣。Pygame與靜態播放器的碰撞

我的問題是,我有一個牆pygame.Rects列表,但我無法找出一種方法,使碰撞與靜態播放器正常工作。我有像這樣的變量

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

其中牆壁包含當前級別的所有牆壁。我該如何做到這一點,當玩家與其中一個正確調整的矩形相碰撞並阻止所有其他牆移動時。 球員的位置決不會改變,因此必須始終爲[100,100],但牆位置確實會改變。

+0

https://stackoverflow.com/questions/31022269/collision-detection-between-two-rectangles-in-java應該很容易翻譯成python – user3080953

+0

@ user3080953 Pygame內置了碰撞邏輯。 – SwiftsNamesake

回答

2

不要移動牆壁。移動播放器。然後,當你繪製所有的遊戲對象時,只需減去玩家的座標並添加(100,100),以使玩家看起來不移動。您的遊戲模型應始終代表遊戲的實際狀態,渲染注意事項通常應僅在渲染時發生。 。