Piedro Opublikowano 23 Lipca 2011 Udostępnij Opublikowano 23 Lipca 2011 czy możliwe jest drawowanie animowanego sprita który nie jest przypisany do żadnej instancji? Jak robię "draw sprite" lub "draw sprite ext" to ukazuje się tylko jedna (wybrana) klatka. Jak zrobić aby ukazywała się cała animacja? (mam gm 8.0 pro) Za pomoc wielkie dzięki. Edit: Wpadłem na pomysł rozwiązania problemu: w pole image_index trzeba wpisać specjalną zmienną, która będzie zmieniać wartośc co ileśtam stepów, ale tu pojawia się problem: mianowicie jak obliczyć co ile stepów zmienia się klatka i przełożyć to na image speed? (mały błąd: ma być na odwrót :)) Edit 2: Jak widać powyższa opcja jest czasochłonna i wymaga skomplikowanych obliczeń. Dało by rade zrobić to prościej? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Rudy Opublikowano 23 Lipca 2011 Udostępnij Opublikowano 23 Lipca 2011 dobrze z polem index w draw_sprite_ext. A co do zmiennej: Jeśli prędkość zmieniania ma być co klatkę to zmienna += 1 co step. jeśli nie to zmienna += szybkosc i w draw_sprite_ext dodaj floor(zmienna) I już ;) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Piedro Opublikowano 23 Lipca 2011 Autor Udostępnij Opublikowano 23 Lipca 2011 dobrze z polem index w draw_sprite_ext. A co do zmiennej: Jeśli prędkość zmieniania ma być co klatkę to zmienna += 1 co step. jeśli nie to zmienna += szybkosc i w draw_sprite_ext dodaj floor(zmienna) I już ;) no to nie jest takie proste bo np jak ja mam np image speed=0.5, to co ile kroków zmienia się klatka? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Rudy Opublikowano 23 Lipca 2011 Udostępnij Opublikowano 23 Lipca 2011 co 1/image_index, czyli co 2 klatki. Ale nie musimy tego liczyć i tak wszystkie liczby są zmiennoprzecinkowe ;) . Więc... wyobraźmy sobie, że nasz image_speed = 0.4. Zerujemy image_index przy starcie. I potem co step dodajemy. A w draw tak jak powiedziałem ;) Jak to działa? Klatka 0: image_index = 0; // floor(image_index) = 0 Klatka 1: image_index += 0.4 // = 0.4 floor(image_index) = 0 Klatka 2: image_index += 0.4 // = 0.8 floor(image_index) = 0 Klatka 3: image_index += 0.4 // = 1.2 floor(image_index) = 1 Klatka 4: image_index += 0.4 // = 1.6 floor(image_index) = 1 Klatka 5: image_index += 0.4 // = 2.0 floor(image_index) = 2 Klatka 6: image_index += 0.4 // = 2.4 floor(image_index) = 2 Klatka 7: image_index += 0.4 // = 2.8 floor(image_index) = 2 Klatka 8: image_index += 0.4 // = 3.2 floor(image_index) = 3 itd, itd... Działa? Raczej tak :) . Ale nie trzeba może ucinać, jeśli liczba będzie za duża? Nie, draw_sprite_ext i tak już to robi. Nie wierzysz, sprawdź image_index przez debug. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
I am Lord Opublikowano 24 Lipca 2011 Udostępnij Opublikowano 24 Lipca 2011 w 2 argumencie funkcji draw_sprite lub draw_sprite_ext wpisz -1 Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
karolo320 Opublikowano 24 Lipca 2011 Udostępnij Opublikowano 24 Lipca 2011 Nie jestem pewien, ale jak sprite nie jest przydzielony do jakiegoś obiektu(sprite_index)to wyświetla się tylko pierwsza klatka, miałem tak kiedyś. Ale mówię, że nie jestem pewny, więc nie wyzywać :) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Piedro Opublikowano 24 Lipca 2011 Autor Udostępnij Opublikowano 24 Lipca 2011 co 1/image_index, czyli co 2 klatki. Ale nie musimy tego liczyć i tak wszystkie liczby są zmiennoprzecinkowe ;) . Więc... wyobraźmy sobie, że nasz image_speed = 0.4. Zerujemy image_index przy starcie. I potem co step dodajemy. A w draw tak jak powiedziałem ;) Jak to działa? Klatka 0: image_index = 0; // floor(image_index) = 0 Klatka 1: image_index += 0.4 // = 0.4 floor(image_index) = 0 Klatka 2: image_index += 0.4 // = 0.8 floor(image_index) = 0 Klatka 3: image_index += 0.4 // = 1.2 floor(image_index) = 1 Klatka 4: image_index += 0.4 // = 1.6 floor(image_index) = 1 Klatka 5: image_index += 0.4 // = 2.0 floor(image_index) = 2 Klatka 6: image_index += 0.4 // = 2.4 floor(image_index) = 2 Klatka 7: image_index += 0.4 // = 2.8 floor(image_index) = 2 Klatka 8: image_index += 0.4 // = 3.2 floor(image_index) = 3 itd, itd... Działa? Raczej tak :) . Ale nie trzeba może ucinać, jeśli liczba będzie za duża? Nie, draw_sprite_ext i tak już to robi. Nie wierzysz, sprawdź image_index przez debug. Nareszcie problem rozwiązany. Dzięki Rudy. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Rekomendowane odpowiedzi