Creando colisiones de sprites - Curso Pygame - Capítulo 12


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.

Código

enemigos = pygame.sprite.Group()

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

Código

enemigos.update()

Además del draw.

Código

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.

Código

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.

Código

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.


Suscríbete a mi canal de YouTube para apoyarme

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.


Comentarios

Si te quedan dudas sobre el temario, sobre Python, 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.