Detectar colisiones en Pygame

Maxim Maeder 21 junio 2023
  1. Detectar colisiones usando rect.collidepoint() en Pygame
  2. Detectar colisiones usando rect.colliderect() en Pygame
  3. Detectar colisiones usando rect.collidelist() o rect.collidelistall() en Pygame
  4. Detectar colisiones usando rect.collidedict() o rect.collidedictall() en Pygame
Detectar colisiones en Pygame

Hay varias formas diferentes de detectar colisiones en Pygame, y este artículo cubrirá algunas de ellas.

El código que se muestra aquí no es el código completo para una ventana de Pygame válida. Si está interesado en un marco básico, consulte este artículo.

Detectar colisiones usando rect.collidepoint() en Pygame

Con el método collidepoint() de la clase rect, podemos probar si un punto dado está dentro del rect. Esto es útil en muchas ocasiones, por ejemplo, cuando desea que algunos elementos de la interfaz de usuario cambien el aspecto al pasar el mouse sobre ellos.

En este artículo, hemos discutido la función e hicimos un botón con ella. Puede proporcionar a la función las coordenadas x e y por separado o proporcionarlas en un iterable como una tupla o una lista.

Sintaxis:

rect.collidepoint(x, y)
rect.collidepoint((x, y))

Detectar colisiones usando rect.colliderect() en Pygame

Con esta función de la clase rect, podemos probar si alguna parte de otro rect está dentro de sus límites. Por lo tanto, tenemos que suplir esta función con otro rect.

Sintaxis:

rect.colliderect(rect)

Detectar colisiones usando rect.collidelist() o rect.collidelistall() en Pygame

También podemos usar el método rect.collidelist(), que recibe una lista de rects y comprueba si alguno se cruza con el rect principal. Esta función devolverá el primer índice rect, que choca con el rect.

El método rect.collidelistall() es similar y solo tiene una diferencia clave: devolverá una matriz con todos los índices de rects que colisionan con el rect principal.

Sintaxis:

rect.collidelist([rect1, rect2, ...])

rect.collidelistall([rect1, rect2, ...])

Detectar colisiones usando rect.collidedict() o rect.collidedictall() en Pygame

Estos métodos son prácticamente iguales a los métodos anteriores, pero devuelven el par clave y valor de rects que chocan con el rect principal.

Sintaxis:

rect.collidedict({
    'rect1': rect1,
    'rect2': rect2,
    ...
})

rect.collidedictall({
    'rect1': rect1,
    'rect2': rect2,
    ...
})
Maxim Maeder avatar Maxim Maeder avatar

Hi, my name is Maxim Maeder, I am a young programming enthusiast looking to have fun coding and teaching you some things about programming.

GitHub