-1

I have been trying to use Pygame collision, but nothing I have tried has works. Now I have ended up with this:

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

It doesn't throw out any errors or anything, but it just always prints 'collide'. I don't know if the collide boxes are too big or both at the same spot or something, but can you help me?

Rabbid76
  • 202,892
  • 27
  • 131
  • 174
Duck Duck
  • 159
  • 6

1 Answers1

1

pygame.Surface.get_rect.get_rect() returns a rectangle with the size of the Surface object, but it returns a rectangle that always starts at (0, 0) since a Surface object has no position.
The Surface is placed at a position when it is blit to the display.

You've to set the location of the rectangle, by a keyword argument. In the following (player_x, player_y) are the coordinates of the player and (hole_x, hole_y) ar eth coordinates of the hole:

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')
Rabbid76
  • 202,892
  • 27
  • 131
  • 174