Detectar colisiones en Pygame
-
Detectar colisiones usando
rect.collidepoint()
en Pygame -
Detectar colisiones usando
rect.colliderect()
en Pygame -
Detectar colisiones usando
rect.collidelist()
orect.collidelistall()
en Pygame -
Detectar colisiones usando
rect.collidedict()
orect.collidedictall()
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,
...
})
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