为什么我的 Pygame 碰撞总是碰撞?

Why is my Pygame Collision always colliding?

我一直在尝试使用 Pygame 碰撞,但我尝试过的都没有用。现在我得到了这个:

player_collison_box = player.get_rect()   
hole_collision_box = hole.get_rect() 
if player_collison_box.colliderect(hole_collision_box):
    print('collision')

它不会抛出任何错误或任何东西,但它总是打印 'collide'。我不知道是碰撞框太大还是都在同一个地方还是什么,但你能帮我吗?

pygame.Surface.get_rect.get_rect() returns 具有 Surface 对象大小的矩形,但它 returns 始终从 (0 , 0) 因为 Surface 对象没有位置。
Surface 放置在与显示器 blit 的位置。

您必须通过关键字参数设置矩形的位置。下面的(player_x,player_y)是玩家坐标和(hole_x, hole_y) ar eth坐标:

player_collison_box = player.get_rect(topleft = (player_x, player_y))
hole_collision_box = hole.get_rect(topleft = (hole_x, hole_y))
if player_collison_box.colliderect(hole_collision_box):
    print('collision')