Come posso disegnare manualmente una parte di un foglio sprite?


9

Sto lavorando in Unity e sto scoprendo che l'animatore non funziona per quello che sto cercando di fare, nel mio gioco 2D. Voglio costruire un'animazione specifica, usando i fogli sprite, ed essere in grado di riutilizzare la stessa animazione con altri sprite che hanno le stesse dimensioni e dimensioni delle celle. Dopo alcune ricerche, trovo che sia impossibile.

Invece, sto cercando di creare il mio script di animazione, ma non capisco come dire a Unity di disegnare solo una sezione dello sprite. Qualcosa come in XNA, in cui è possibile eseguire il rendering solo di un rettangolo specifico di uno sprite utilizzando le coordinate di inizio e fine.

Come posso disegnare manualmente una parte di un foglio sprite?


3
Ciò è possibile in Unity senza duplicare i dati di animazione, con un piccolo trucco. Effettivamente, riproduci l'animazione A usando spritesheetA, quindi in LateUpdate scambia ogni Sprite di SpriteRenderer con il suo analogo da spritesheetB. C'era un video Unity su questa tecnica; Lo pubblicherò come risposta se lo trovo in seguito, ed elaborerò i dettagli. Ciò ti consentirà di sfruttare tutta la potenza del sistema di animazione nativo di Unity senza dover scrivere il tuo da zero.
DMGregory

Dovresti provare Spine o qualche altro software di animazione scheletrica. Ha una funzionalità skin che ti consente di mantenere le stesse animazioni ossee, ma scambia e cambia skin come necessario. Personalmente uso Spine perché è semplice, ci sono tutorial e ha un tempo di esecuzione unitario che rende tutto super semplice. Il rovescio della medaglia è che costa denaro, ma la versione di base ti dà tutto il necessario per realizzare animazioni. La versione pro semplifica e velocizza.
Savlon,

usa le maschere se lavori sull'interfaccia utente
virtouso,

Risposte:


1

Penso che ci possa essere un approccio più semplice in cui è possibile farlo e utilizzare ancora Unity Mecanim per l'animazione.

Passi: -

1) È possibile assegnare a livello di programmazione sprite 2D di trama dall'immagine e, poiché si tratta di una griglia, non sarà molto difficile farlo. Nella seguente risposta l'utente ha creato il proprio slicer sprite e salvato nella directory (opzionale altrimenti salvalo in una variabile). Non hai bisogno dell'intero codice, basta controllare la funzione GetSprites () e otterrai l'idea :)

http://answers.unity3d.com/questions/576799/coding-my-own-auto-slicer-getting-islands-of-pixel.html

2) Una volta che sei in grado di farlo, allora mantieni una matrice di sprite, che hai ottenuto dal passaggio 1.

3) Ora devi creare un file anim di questi sprite che può essere collegato a Mecanim. Per questo è necessaria la funzione Set Curve di Unity (controllare il collegamento fornito di seguito). Una volta che hai la clip dipende da te per salvarla per un uso futuro o semplicemente per averla in una variabile solo per l'istanza di gioco corrente.

http://docs.unity3d.com/ScriptReference/AnimationClip.SetCurve.html

Spero che questo risolva il tuo dubbio :)

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.