Fogli di Sprite in PyGame?

1

Quindi, ho fatto qualche ricerca su google e non ho trovato una buona soluzione al mio problema. Il mio problema è che sto usando PyGame e voglio usare un Foglio Sprite per il mio giocatore.

Questo è tutto a posto, e lo sarebbe anche se non usassi una striscia di Sprite Sheet. Fondamentalmente, se non capisci, ho una striscia di 32 x 32 'frame'. Questi fotogrammi sono tutti in un'immagine, uno accanto all'altro. Quindi, ho 3 fotogrammi in 1 immagine. Mi piacerebbe poterli usare come mio sprite sheet e non doverli ritagliare.

Ho usato una struttura di gioco fantastica, popolare e facile da usare per Lua chiamata LÖVE. LÖVE ha queste cose chiamate "Quad". Sono simili alle regioni di texture in LibGDX, se sai cosa sono. Fondamentalmente, i quad ti permettono di ottenere parti di un'immagine. Definisci quanto è grande un quadrilatero e definisci le parti di un'immagine in questo modo, o "le regioni" di un'immagine.

Mi piacerebbe fare qualcosa di simile a questo in PyGame, e usare un ciclo "for" per passare attraverso l'intera larghezza e altezza dell'immagine e contrassegnare ogni area 32x32 (o qualsiasi altra cosa l'utente definisca la larghezza e l'altezza della cornice desiderata) e memorizzalo in una lista o qualcosa da usare in seguito. Definirei una velocità di animazione e roba del genere, ma lo farò in seguito.

Mi sono guardato intorno sul web e non riesco a trovare nulla che lo faccia. Ho trovato 1 script sul sito PyGame, ma si è verificato un crash di PyGame quando ho provato ad eseguirlo. Ho provato per ore cercando di sistemarlo, ma senza fortuna. Quindi, c'è un modo per farlo? C'è un modo per ottenere regioni di un'immagine? Sto andando su questo nel modo sbagliato? C'è un modo più semplice per farlo?

Grazie! : -)

    
posta Eamonn 05.10.2013 - 01:05
fonte

1 risposta

2

Dato che stai ovviamente programmando il tuo gioco in Python, puoi usare il modulo di cuscini (doc / tutorial qui ) per utilizzare le strisce di sprite (o griglie, come è pratica comune) esattamente come descrivi.

In particolare, controlla la sezione su taglia, incolla e fusione di immagini .

Puoi aprire il file immagine della striscia di sprite
strip = Image.open("sprites")
quindi ritagliarlo per recuperare il Nth sprite (assumendo la dimensione 32x32, a partire da 0) con
sprite = strip.crop( (N*32, 0, 32, 32) )

Ovviamente l'immagine della striscia di sprite rimane intatta: crop () estrae solo una copia della regione specificata. (È la funzione paste () che consente di modificare l'originale, incollando in una regione con precisione.)

Se vuoi un array di sprite (una lista, in senso stretto), allora puoi fare qualcosa come
[strip.crop( (N*32, 0, 32, 32) ) for n in range(nb_of_sprites)]

Piuttosto facile, non è vero?

    
risposta data 03.04.2014 - 21:42
fonte

Leggi altre domande sui tag