2013-07-31 11 views

risposta

13

Prima creare una trama (regione) con la barra di avanzamento circolare completa. Quindi deformare una forma (mesh) composta da uno o più triangoli per adattarla all'area effettiva che dovrebbe essere mostrata.

Per questo, pensare a una linea dal centro dell'immagine ai limiti dell'immagine. Calcola il punto di intersezione (e "muro", cioè a sinistra, a destra, in alto o in basso nell'immagine) della linea all'angolo indicato. Questo ti darà la porzione della trama (regione) che deve essere disegnata.

Ad esempio, se la linea a riposo (angolo è pari a zero) attraversa la parete di fondo dell'immagine al centro, l'immagine è quadrata e si desidera ruotare in senso orario, quindi tutto tra 45 e 135 gradi colpisce la parete sinistra , tra 135 e 225 gradi colpisce la parete superiore e così via.

Ora che hai la forma, dovrai esprimerla a triangolo. O per mantenere la compatibilità con lo spritebatch di libgdx, un numero pari di triangoli. Assicurati di aggiornare i valori U e V in base alla posizione del vertice.

Una semplice implementazione di questo può essere trovato qui: https://github.com/xoppa/world/blob/master/src/com/xoppa/android/misc/RadialSprite.java

+0

Grazie mille per questo. Ho appena aggiornato il tuo codice e fatto un succo. Spero non ti dispiaccia: https://gist.github.com/chandujr/5d79f3603efadb566d0a8f7edb5ba0ad – WeirdElfB0y

Problemi correlati