Curso de videojuegos con Pygame

Crear colisiones con Pygame

Capítulo 12: Creando colisiones de sprites

En este capítulo vamos a añadir colisiones al juego.

Lo primero es tener claro qué queremos hacer:
Yo lo que quiero hacer es que cuando mi nave colisione con cualquier enemigo, se destruya (la nave enemiga y no la mía), y que cuando haya dicha colisión, esta se transforme en una bola de fuego y caiga hacia abajo desapareciendo por la parte inferior de la pantalla.

Para llevar esto a cabo, hay que crear un grupo de sprites para los enemigos.
Esta vez es un requisito y no una opción si queremos utilizar un método muy útil de Pygame para las colisiones de sprites, ya que hasta ahora utilizábamos un mismo grupo para todos los sprites.

enemigos = pygame.sprite.Group()

Puesto que has creado un nuevo grupo, tienes que crear su update.

enemigos.update()

Además del draw.

enemigos.draw(pantalla)

Todo esto ya vimos donde se colocaba, pero si no te acuerdas, en el vídeo de arriba aparece.

Una vez hecho todo esto es el momento de añadir una variable para la colisión.

colision = pygame.sprite.spritecollide(jugador, enemigos, False)

Con esto, estamos diciendo que el sprite jugador, pueda colisionar con el grupo de sprites enemigos, es decir, cualquier enemigo que instanciemos.
Finalmente, con el False indicamos que no elimine el sprite del enemigo al colisionar, ya que quiero que el enemigo siga en el juego, pero esta vez como bola de fuego.

Bola de fuego

Ahora podemos añadir por ejemplo un if que haga que ocurra algo en el caso de que se produzca una colisión.

if colision:
	enemigo.image = pygame.image.load("principal/explosion.png")
	enemigo.velocidad_y += 20
elif enemigo.rect.top > ALTO:
	enemigo.kill()

Lo que conseguimos en este if - elif es indicar que cuando se produzca la colisión, se cambie la imagen del enemigo por la de una bola de fuego y que esta descienda a la parte baja de la pantalla.
Una vez desaparece de la pantalla la eliminamos con el kill() y evitamos que pueda volver a subir y que se sobrecargue el juego de objetos innecesarios.


Comentarios

Si te quedan dudas sobre el temario, sobre Python, Pygame o cualquier otra cosa relacionada o simplemente quieres agradecer, aquí tienes tu sitio para dejar tu granito de arena. Gracias por tus comentarios y por darle vida a este sitio web.

Programación Fácil YouTube

Suscríbete

Si te ha gustado este curso y crees que el trabajo merece la pena, te agradeceré eternamente que te suscribas a mi canal de YouTube para apoyarme y que pueda seguir haciendo cursos gratuitos.

Además, si te encanta la programación, tienes un montón más de cursos gratuitos para ver.

No solo eso, podrás participar enviándome comentarios con tus sugerencias para temas específicos o cursos completos o incluso las dudas que tengas y las intentaré ir resolviendo en los cursos que estén todavía abiertos.