Skocz do zawartości

dwa sposoby nadawania ruchu


Rekomendowane odpowiedzi

Witam

Jest sobie sprite który ma animację obracającej się kuli. Prędkość animacji powinna być równa hspeed -vspeed. Żeby to zrobić wpisuję kod:

GML
if(spacja=2)

{motion_set(kierunek,obj_silawyrzutu.image_index*4);

gravity=4;

gravity_direction=270;

if(hspeed-vspeed>0)

image_speed=hspeed-vspeed

else

image_speed=0

}

ale niestety kula cały czas obraca się z tą samą prędkością, albo w ogóle się nie obraca. Czy jest to spowodowane tym że nie można sprawdzić "hspeed" i "vspeed", gdy używa się "motion_set", czy problem tkwi gdzieś indziej?

Odnośnik do komentarza
Udostępnij na innych stronach

Prędkość animacji powinna być równa hspeed -vspeed

Skąd to założenie wziąłeś? Ono jest błędne

Odnośnik do komentarza
Udostępnij na innych stronach

Pełny obrót to 360 stopni.

Wiadomo, że z pełnym obrotem piłka musi obrócić się o długość swojego obwodu (a raczej obwodu największego przekroju)

Wzór na obwód koła: 2*pi*r

r to promień. Promień to będzie połowa szerokości sprita piłki więc

O = sprite_width*pi;

(chyba, że masz jeszcze jakieś zbędne pixele przezroczyste wokół sprita to sobie sam musisz zmierzyć promień)

 

To jeszcze raz: przy pokonaniu drogi O piłka wykonuje pełny obrót.

Tak więc przy pokonaniu drogi

s = sqrt(sqr(hspeed)+sqr(vspeed)) (obliczone z pitagorasa)

 

Czyli drogi O/s razy mniejszej, piłka musi obrócić się o tyle razy mniejszy kąt.

 

image_speed=360*(s/O)

 

Wydaje mi się, że nic nie pochrzaniłem :)

Odnośnik do komentarza
Udostępnij na innych stronach

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

Zarejestruj nowe konto

Załóż nowe konto. To bardzo proste!

Zarejestruj się

Zaloguj się

Posiadasz już konto? Zaloguj się poniżej.

Zaloguj się
  • Ostatnio przeglądający   0 użytkowników

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