Automatyczne wyznaczanie liczby klatek z Sprite Sheetu
Ostatnio zmodyfikowano dzisiaj: 6h » 1 min
tBane Temat założony przez niniejszego użytkownika |
» 2025-10-26 21:46:09 Już mam ręczne ustawianie rozmiaru i obliczanie animacji/klatek. Teraz chcę zrobić automat który niekoniecznie musi zawsze dobrze obliczać szerokośćKlatki/wysokośćKlatki/liczbęAnimacji/liczbęKlatek ale zazwyczaj żeby działał dla poprawnie narysowanych spritesheetów
// edit mam pomysł na wyznaczanie nr animacji i nr klatki animacjaID = rectPosY / maxFrameHeight; klatkaID = rectPosX / maxFrameWidth;
Co o tym myślisz pekfos ? |
|
pekfos |
» 2025-10-26 22:16:50 Twoja koncepcja nie rozwiązuje problemu jak tą animację wyświetlić w grze. Masz animację z klatkami 32x32 dla jednego aktora, z klatkami 68x68 dla drugiego, itp. Jak te animacje wyświetlisz? Musisz ręcznie podać przesunięcie dla tych animacji, zależnie od tego co w nich jest. Nie wiedziałem co masz, więc opisałem rozwiązanie które rozwiązuje wszystko. Jak masz edytor do animacji, to nie chcesz mieć jeszcze kroku ręcznego dopasowywania przez wpisanie stałych do kodu, prawda? W animowanych modelach 3d, wszystko jest względem punktu 0,0,0, bo nie ma problemu tam że model idzie w ujemne współrzędne. Tu są tylko dodatnie współrzędne, więc musisz mieć offset. Z takiego edytora powinien wychodzić plik graficzny i plik z opisem animacji. W ogólnym przypadku, nie ma żadnej reguły jak klatki są zorganizowane w pliku graficznym. |
|
tBane Temat założony przez niniejszego użytkownika |
» 2025-10-26 22:30:32 Eh. Nic nie rozumiem. Jutro spróbuję napisać kod moją metodą i wrzucę na forum. Ok? |
|
skovv |
» 2025-10-27 00:08:39 Najlepiej bez zabawy ręcznie wpisać ale jak już musisz to: - ustal kolor tła jakie ma animacja(jakiś kolor albo przezroczyste) - sprawdzaj cały obrazek w poziomych liniach od góry do momentu aż znajdziesz inne Pixel. Jeśli znajdziesz to bool coswykryto = true, int start = aktualney - dalej sprawdzasz te poziome linie w za każdym razem z y += 1 do momentu aż znajdziesz linie gdzie cała linia ma kolor tła, wtedy int przewidywanawysokosc=y - teraz lecisz piony od x=0 na wysokościach od 0 do przewidywanawysokosc. Jak coś znajdzie to coswykryto = true - lecisz dalej aż znów cała linia będzie pusta i masz int przewidywanaszerokosc=x
Da Ci to (najpewniej) klatkę, mozesz teraz napisać prowizoryczny system liczenia klatek(najlepiej w prawo):
Bool git = false Int maybex = przewidywanaszerokosc While(!git){ If(przewidywanaszerokosc podzielona przez maybex daje wynik z resztą) maybex += 1; Else { Bool byłobrazek = false; Ilośćklatek = przewidywanaszerokosc / maybex; For(i = 0; i<ilość klatek; i++){ Tu sprawdzaj czy w pionowej lini na pozycji x = i*maybex - czy było na tej linii coś poza tłem. Jeśli tak to byłobrazek= true; } If byłobrazek to maybex += 1 Else git = true } Jak wyjdzie ci te maybex to sprawdzaj czy pasuje taki wymiar dla klatkay. Myślę że cos w tym stylu
Sorry ale pisze z telefonu, musiałem pilnie wyjechać na 2 dni i bez pc :D |
|
| 1 « 2 » |