¿Cómo dibujo manualmente una parte de una hoja de sprite?

9

Estoy trabajando en Unity, y descubro que el animador no funciona para lo que intento hacer, en mi juego 2D. Quiero construir una animación específica, usando hojas de sprites, y poder reutilizar la misma animación con otros sprites que tengan el mismo tamaño y dimensiones por celdas. Después de un poco de investigación, encuentro que es imposible.

En cambio, estoy tratando de crear mi propio script de animación, pero no entiendo cómo decirle a Unity que dibuje solo una sección del sprite. Algo así como en XNA, donde podría renderizar solo un rectángulo específico de un sprite utilizando las coordenadas de inicio y fin.

¿Cómo dibujo manualmente una parte de una hoja de sprite?

Shaun
fuente
3
Esto es posible en Unity sin duplicar los datos de animación, con un pequeño truco. Efectivamente, juegas la animación A usando la hoja de spritesA, luego en LateUpdate cambias cada SpriteRenderer's Sprite a su análogo de la hoja de spritesB. Hubo un video de Unity sobre esta técnica; Lo publicaré como respuesta si puedo encontrarlo más tarde, y detallaré los detalles. Esto le permitirá usar todo el poder del sistema de animación nativo de Unity sin tener que escribir el suyo desde cero.
DMGregory
Deberías probar Spine o algún otro software de animación esquelética. Tiene una capacidad de máscaras que le permite mantener las mismas animaciones óseas, pero intercambiar y cambiar máscaras según sea necesario. Personalmente uso Spine porque es simple, hay tutoriales y tiene un tiempo de ejecución de la unidad que hace que todo sea muy simple. La desventaja es que cuesta dinero, pero la versión básica le brinda todo lo que necesita para hacer animaciones. La versión pro solo lo hace más fácil y rápido.
Savlon
use máscaras si trabaja en la interfaz de usuario
virtouso

Respuestas:

1

Creo que puede haber un enfoque más simple en el que puede hacer esto, y aún usar Unity Mecanim para la animación.

Pasos:-

1) Puede asignar programáticamente sprites 2D de textura desde la imagen, y como es una cuadrícula, no será mucho más difícil hacerlo. En la siguiente respuesta, el usuario ha creado su propia rebanadora de sprites y la ha guardado en el directorio (opcional, de lo contrario, guárdela en una variable). No necesita todo el código, simplemente verifique la función GetSprites () y obtendrá la idea :)

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

2) Una vez que puedas hacer eso, mantén una Matriz de sprites, que obtuviste del paso 1.

3) Ahora necesita crear un archivo de animación de estos sprites que pueda conectarse a mecanim. Para ello, necesita la función Establecer curva de Unity (consulte el enlace que se proporciona a continuación). Una vez que tengas el clip, depende de ti guardarlo para usarlo en el futuro o simplemente tenerlo en una variable solo para la instancia actual del juego.

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

Espero que esto resuelva tu duda :)

Hash Booy
fuente