Sito web di notizie tecnologiche e videogames.

Pygame Shooter Parte 3: Gestire le collisioni

6

Questo articolo è la terza parte del progetto PyShooter, oggi vedremo come catturare e gestire le collisioni tra il player gestito dall’utente e i nemici.

Le collisioni

Le collisioni sono un aspetto fondamentale dello sviluppo di un videogioco. La gestione delle collisioni può essere divisa in due aspetti:

  • La rilevazione delle collisioni (Collision detection) è l’aspetto che si occupa di rilevare e intercettare le collisioni
  • Il comportamento in risposta ad una collisione (Collision response) si occupa di quale evento scatenare quando è rilevata una collisione.

Per rilevare quando due oggetti collidono vengono confrontate le loro coordinate. Un metodo di collision detection molto utilizzato è conosciuto come AABB (Axis Aligned Bounding Box).

Questo metodo rileva una collisione tra due rettangoli nel momento in cui i loro bordi si sovrappongono sia sull’asse x sia sull’asse y.

Pygame Shooter Parte 3: Gestire le collisioni

Nell’immagine possiamo vedere come il rettangolo numero 3 sia l’unico a collidere con il rettangolo di riferimento in quanto i due oggetti si sovrappongono su entrambe le dimensioni.

Fortunatamente per noi Pygame è fornito di un metodo integrato che fa tutto ciò tramite la funzione spritecollide().

Collision detection

Per gestire la collisione tra i nemici e il player aggiungiamo le seguenti righe al game loop del nostro programma.

hits = pygame.sprite.spritecollide(player, mobs, False)
if hits:
    running = False

La funzione spritecollide() prende tre argomenti: il nome di uno sprite, il nome di un gruppo di sprite e un parametro booleano (True/False) chiamato dokill. Il parametro dokill ti permette di scegliere se l’oggetto del gruppo di sprite (secondo argomento) che collide con lo sprite (primo argomento) verrà cancellato. La funzione spritecollide() ritorna la lista di mob che hanno colliso con il nostro sprite.

Se la lista non è vuota settiamo lo stato di running a False e terminiamo il videogioco.

Nel prossimo articolo vedremo come sparare dei proiettili dal nostro sprite!

Link al codice: code

Link al precedente articolo: Pygame Shooter Parte 2: Generare i mob

Commenti