Pygame中的物理与碰撞

时间:2018-06-03 02:12:04

标签: python pygame collision

我找不到在tilemap上进行物理碰撞的方法。 tilemap [PLAYERPOS]是一个变量,它保存玩家在tilemap上的位置以及它是哪个块。 playerPos [0]& 1;是玩家的2 x,y坐标 ogplayerpos解释了之后。 这就是它的作用。如果玩家在使用WOOD或PLANKS的瓷砖上,请将它们踢回原位(前一个瓷砖)。

ogplayerPos = tilemap[playerPos[1]][playerPos[0]]
if tilemap[playerPos[1]][playerPos[0]] == WOOD or tilemap[playerPos[1]][playerPos[0]] == PLANKS:
    if ogplayerPos == playerPos[1] + 1 :
        playerPos[1] -= 1
    if ogplayerPos == playerPos[1] - 1 :
        playerPos[1] += 1
    if ogplayerPos == playerPos[0] - 1 :
        playerPos[0] += 1
    if ogplayerPos == playerPos[0] + 1 :
        playerPos[0] -= 1 

ogplayerPos(代表原始玩家位置),占据你的原始位置,这是在游戏循环中(而真正的:),当你踩到一块木块上有木块或PLANKS时,它会把你送回给你原来的位置。但是,这完全正常工作,这并没有提升和错误,但它非常时髦。有时它会让我进入一个瓷砖,有时它会推动我通过对角线,有时它可以工作,但只能在某些方向......

哦,这是什么游戏?这是基于http://usingpython.com/pygame/教程的minecraft2d我试图通过添加图层等来扩展它。我的下一个挑战是建立碰撞,但它并不完全正常。

这里的完整代码使用最新的pygame和Python3.6.5运行它。你需要下载所有的图片和字体也是。顺便说一句,有原始代码,你可以从那里的链接获得所有的照片。但是,如果你很懒(而且你相信我),你可以获得拉链。 https://inthesky.kumaneko.ca/pygamemc2d.html

希望我写得很好,上次我发布它并不顺利。 - ~Reefive - Sky

0 个答案:

没有答案