2
\$\begingroup\$

Can someone tell me how to implement collision in Pygame?
For example I have a sprite called A and another one called B.
How do I detect if they collide in Pygame?

\$\endgroup\$
1
  • \$\begingroup\$ Technically, this has very little to do with pygame. It's more a generic algorithm. \$\endgroup\$
    – Ikke
    Sep 2, 2011 at 10:26

2 Answers 2

5
\$\begingroup\$

Take a look at:

http://www.pygame.org/docs/ref/sprite.html#pygame.sprite.collide_rect

And the several methods following it. You can test against a rectangle, circle, mask, sprite, or group of sprites.

You probably want

pygame.sprite.collide_mask(SpriteLeft, SpriteRight): return bool

Which checks if two sprites collide based on their bitmasks.

\$\endgroup\$
2
  • \$\begingroup\$ MmHm, Okay, So Do I Have To Like, Assign Something To The Sprite ? \$\endgroup\$
    – Firetryer
    Jul 23, 2011 at 9:26
  • 2
    \$\begingroup\$ You call is_a_collision = pygame.sprite.collide_mask(A, B), and if there was a collision, you is_a_collision will be True, if there wasn't a collision, is_a_collision will be False. Please remember to accept an answer if it helped you. \$\endgroup\$
    – agf
    Jul 23, 2011 at 9:31
2
\$\begingroup\$

I use collisions based on rectangles. Both sprites need a .rect assigned to them.

Then check for a collision

  • pygame.sprite.collide_rect(A, B)

    (returns a boolean if there is a collision)

Alternatively you can use the rectangle to check for a collision, eg

  • A.rect.colliderect(B.rect)

    (returns a boolean if there is a collision)

I use rect collisions because they're faster than bitmap checks.

Pygame rect docs http://www.pygame.org/docs/ref/rect.html

\$\endgroup\$

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .