Jak ręcznie narysować część arkusza duszków?

9

Pracuję w Unity i odkrywam, że animator nie działa zgodnie z tym, co próbuję zrobić w mojej grze 2D. Chcę zbudować konkretną animację przy użyciu arkuszy sprite i móc ponownie używać tej samej animacji z innymi sprite'ami o tym samym rozmiarze i wymiarach według komórek. Po kilku badaniach stwierdzam, że jest to niemożliwe.

Zamiast tego próbuję stworzyć własny skrypt animacji, ale nie rozumiem, jak powiedzieć Unity, aby narysowała tylko część duszka. Coś jak w XNA, w którym można renderować tylko określony prostokąt duszka przy użyciu współrzędnych początkowych i końcowych.

Jak ręcznie narysować część arkusza duszków?

Shaun
źródło
3
Jest to możliwe w Unity bez powielania danych animacji, z niewielkim włamaniem. W efekcie grasz animacją A za pomocą spritesheetA, a następnie w LateUpdate zamieniasz każdego SpriteRenderer's na jego analog z SpriteheetB. W tej technice był film z Unity; Prześlę go jako odpowiedź, jeśli uda mi się go znaleźć później i przedstawię szczegóły. Umożliwi to wykorzystanie pełnej mocy natywnego systemu animacji Unity bez konieczności pisania własnego od zera.
DMGregory
Powinieneś wypróbować Spine lub inne oprogramowanie do animacji szkieletów. Ma funkcję skórki, która pozwala zachować te same animacje kości, ale w razie potrzeby zamieniać i zmieniać skórki. Osobiście używam Spine, ponieważ jest prosty, są tutoriale i ma środowisko uruchomieniowe jedności, które sprawia, że ​​wszystko jest super proste. Minusem jest to, że kosztuje, ale podstawowa wersja zapewnia wszystko, czego potrzebujesz do tworzenia animacji. Wersja pro sprawia, że ​​jest to łatwiejsze i szybsze.
Savlon
używaj masek, jeśli pracujesz na interfejsie użytkownika
virtouso

Odpowiedzi:

1

Myślę, że może istnieć prostsze podejście, w którym możesz to zrobić i nadal używać Unity Mecanim do animacji.

Kroki:-

1) Możesz programowo przypisać sprity 2D tekstury z obrazu, a ponieważ jest to siatka, nie będzie to trudne. W poniższej odpowiedzi użytkownik utworzył własny fragmentator duszków i zapisał go w katalogu (opcjonalnie w innym przypadku po prostu zapisz go w zmiennej). Nie potrzebujesz całego kodu, po prostu sprawdź funkcję GetSprites (), a wpadniesz na pomysł :)

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

2) Gdy będziesz w stanie to zrobić, utrzymaj zestaw duszków, które otrzymałeś od kroku 1.

3) Teraz musisz utworzyć plik animacji tych duszków, które można podłączyć do mecanim. W tym celu potrzebujesz funkcji Set Curve Unity (sprawdź link podany poniżej). Gdy klip jest już gotowy, możesz zapisać go do użycia w przyszłości, czy po prostu umieścić go w zmiennej tylko dla bieżącej instancji gry.

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

Mam nadzieję, że to rozwiąże twoje wątpliwości :)

Hash Boja
źródło