如何检查tilemap中的碰撞(Python / Pygame)

时间:2015-05-03 16:54:29

标签: python pygame

我在Python / Pygame中制作2D RPG,并且我在地图瓦片地图中制作地图。如何检查玩家是否接触到tilemap中的某个图块(在本例中为墙)。

system("/Applications/Safari.app/Contents/MacOS/Safari");

我希望墙能够行动,就像墙一样。并且玩家无法通过它。

1 个答案:

答案 0 :(得分:1)

检查碰撞的一种简单方法,特别是在tilemap中,只是当用户试图移动玩家时...的一行。

现在,我们会考虑播放器的尺寸为1,因此我们可以将其坐标与贴片一起使用'那些。

例如,在您的情况下,您可以按如下方式编写,而不是最后的四个if / elif:

if keyPressed[pygame.K_LEFT] and playerX > 0:
    if tileMap[playerY][playerX - 1] is not wall:
        playerX -= 1
elif keyPressed[pygame.K_RIGHT] and playerX < mapWidth - 1:
    if tileMap[playerY][playerX + 1] is not wall:
        playerX += 1
elif keyPressed[pygame.K_UP] and playerY > 0:
    if tileMap[playerY - 1][playerX] is not wall:
        playerY -= 1
elif keyPressed[pygame.K_DOWN] and playerY < mapHeight - 1:
    if tileMap[playerY + 1][playerX] is not wall:
        playerY += 1

然后,在那之后,你将不得不重新绘制整个屏幕(或者只有前一个和当前的位置,但这将更难编码),但我不知道{{1}足以告诉你使用什么功能...