Skocz do zawartości

Zablokowane Draw sprite- problemy


Piedro

Rekomendowane odpowiedzi

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

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

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

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

Gość
Ten temat został zamknięty. Brak możliwości dodania odpowiedzi.
  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...