我目前正在Python上制作一个简单的轻飘飘的鸟类游戏。由于某种原因,当管道和鸟接触时,碰撞代码不起作用。def collision(): global distanceDown, distanceUp distanceUp = math.sqrt(math.pow(pipeUpX - birdX, 2) + math.pow(pipeUpY - birdY, 2)) # distance formula distanceDown = math.sqrt(math.pow(pipeDownX - birdX, 2) + math.pow(pipeDownX - birdY, 2)) if distanceUp <= 20 or distanceDown <= 20: return True else: return False我已经在主游戏循环中调用了该函数,并要求python结束游戏(如果为真),但鸟只是通过管道。仅供参考,我没有使用OOP和类。以下是值。pipeWidth = 50pipeHeight = 130pipeUpX = 800pipeUpY = 0pipeDownY = screenY - pipeHeightpipeDownX = 900pipeX_change = 1另外,我对python和编程作为一个整体非常陌生,所以请用易于理解的代码回答。谢谢你:)
1 回答
德玛西亚99
TA贡献1770条经验 获得超3个赞
该代码不会验证到管道的距离。该代码验证到管道起点和终点的距离。这是另一回事。
由于您的对象只是矩形,我建议使用和方法。例如,一些伪代码:pygame.Rect objeccts
colliderect
def collision(): pipeRect = pygame.Rect(pipeLeft, pipeTop, pipeWidth, pipeHeight) birdRect = pygame.Rect(birdLeft, birdTop, birdWidth, birdHeight) return pipeRect.colliderect(birdRect)
对于“图像”的碰撞,我建议分别使用pygame.精灵.精灵
/pygame.sprite.collide_mask()
pygame.mask.mask.pygame.mask.mask.overlap
()
。
添加回答
举报
0/150
提交
取消