我正在制作这个游戏,你正在使用箭头键移动一个圆圈,并在屏幕上随机产生另一个圆圈。我想制作一段代码来检测第一个圆圈与第二个圆圈碰撞的时间。我知道collidepoint()
可能会有用,但我真的无能为力。任何帮助都会非常感激。
while True:
#if image1 collides with image2
Score -= 1
答案 0 :(得分:3)
Pygame支持使用圆圈的精灵之间的碰撞检测。
您需要的API调用是:
pygame.sprite.collide_circle()
你可以在游戏开发SE上看到this question中使用它的一个例子(并且不用担心 - 问题所涉及的错误已经修复)。
如果由于某种原因你没有使用精灵,那么圆圈碰撞检测非常简单:只测试它们之间的距离是否小于它们的半径之和。 或者更确切地说,测试它们之间的距离的平方是否小于它们的半径之和的平方(以避免慢速平方根计算):
def circlesCollide(x1, y1, r1, x2, y2, r2):
return (((x2-x1)**2) + ((y2-y1)**2) < ((r1+r2)**2))
请注意,这假设您的圆圈移动速度不够快,无法在一个更新步骤中通过另一个圆圈,在这种情况下,您需要进行扫掠圆碰撞测试。