Как вручную нарисовать часть листа спрайта?

9

Я работаю в Unity и обнаружил, что аниматор не работает для того, что я пытаюсь сделать, в моей 2D-игре. Я хочу создать определенную анимацию, используя листы спрайтов, и иметь возможность повторно использовать ту же анимацию с другими спрайтами, которые имеют одинаковый размер и размеры по ячейкам. После некоторых исследований я обнаружил, что это невозможно.

Вместо этого я пытаюсь создать свой собственный сценарий анимации, но я не понимаю, как сказать Unity рисовать только часть спрайта. Что-то вроде XNA, где вы можете визуализировать только определенный прямоугольник спрайта, используя начальную и конечную координаты.

Как вручную нарисовать часть листа спрайта?

Shaun
источник
3
Это возможно в Unity без дублирования данных анимации, с небольшим взломом. По сути, вы воспроизводите анимацию A с использованием spritesheetA, затем в LateUpdate вы меняете Sprite каждого SpriteRenderer на его аналог из spritesheetB. На этой технике было видео Unity; Я опубликую это как ответ, если смогу найти это позже, и уточню детали. Это позволит вам использовать всю мощь собственной анимационной системы Unity без необходимости писать свою собственную с нуля.
DMGregory
Вы должны попробовать Spine или другое программное обеспечение для скелетной анимации. Он имеет возможность скинов, которая позволяет вам поддерживать ту же анимацию костей, но менять и менять скины по мере необходимости. Я лично использую Spine, потому что он прост, есть учебники, и он имеет единое время выполнения, которое делает все очень простым. Недостатком является то, что он стоит денег, но базовая версия дает вам все необходимое для создания анимации. Pro версия просто делает это проще и быстрее.
Савлон
используйте маски, если вы работаете над пользовательским интерфейсом
virtouso

Ответы:

1

Я думаю, что может быть более простой подход, при котором вы можете сделать это, и все же использовать Unity Mecanim для анимации.

Шаги: -

1) Вы можете программно назначать текстурные 2D спрайты из изображения, и, поскольку это сетка, это не составит большого труда. В следующем ответе пользователь создал свой собственный слайдер спрайтов и сохранил его в каталоге (необязательно, просто сохраните его в переменной). Вам не нужен весь код, просто проверьте функцию GetSprites (), и вы получите идею :)

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

2) Как только вы сможете это сделать, сохраните массив спрайтов, который вы получили на шаге 1.

3) Теперь вам нужно создать анимированный файл этих спрайтов, который можно подключить к mecanim. Для этого вам нужна функция Set Curve Unity (проверьте ссылку, приведенную ниже). Как только у вас есть клип, вы можете сохранить его для будущего использования или просто сохранить в переменной только для текущего игрового экземпляра.

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

Надеюсь, что это разрешит ваши сомнения :)

Хэш-буй
источник