我在Python / Pygame中制作2D RPG,并且我在地图瓦片地图中制作地图。如何检查玩家是否接触到tilemap中的某个图块(在本例中为墙)。
system("/Applications/Safari.app/Contents/MacOS/Safari");
我希望墙能够行动,就像墙一样。并且玩家无法通过它。
答案 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}足以告诉你使用什么功能...