Marcin1147 Opublikowano 30 Kwietnia 2010 Udostępnij Opublikowano 30 Kwietnia 2010 Potrzebuje poruszania się po danym kącie z daną szybkością. Kiedyś miałem taki fajny kod, ok. 4 linie ale działał perfekcyjnie. Z pamięci napisałem takie coś, ale nie działa tak jakbym chciał. Kod jest do C#, ale mi chodzi o sam algorytm. angle = direction * (180/Math.PI); dx = Math.Cos(angle) * speed; dy = Math.Sin(angle) * speed; x += (int)dx; y += (int)dy; Pomóżcie! Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Konrad-GM Opublikowano 30 Kwietnia 2010 Udostępnij Opublikowano 30 Kwietnia 2010 float angle = direction * (180/Math.PI); x += (int)(Math.Cos(angle) * speed); y -= (int)(Math.Sin(angle) * speed); ?? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Marcin1147 Opublikowano 30 Kwietnia 2010 Autor Udostępnij Opublikowano 30 Kwietnia 2010 Yyy, to jest mój kod tylko skrócony? Nic się nie zmieniło. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Konrad-GM Opublikowano 30 Kwietnia 2010 Udostępnij Opublikowano 30 Kwietnia 2010 Jakbym wiedział gdzie leży błąd... nie jesteśmy jasnowidzami :) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Marcin1147 Opublikowano 30 Kwietnia 2010 Autor Udostępnij Opublikowano 30 Kwietnia 2010 Chodzi mi o to, że ten kod nie działa jak powinien, zwyczajnie "świruje". Chciałem aby ktoś znający się trochę na matmie napisał algorytm działający jak GM'owe speed i direction bo mój kod (z pierwszego postu) zwyczajnie nie działa. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Administratorzy gnysek Opublikowano 30 Kwietnia 2010 Administratorzy Udostępnij Opublikowano 30 Kwietnia 2010 A jest uwzględniona prędkość gry (FPS) ? Bo jeżeli ten kod wykonuje się co cykl zegara, to dość szybko przekracza zakres INTa. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Dawidds Opublikowano 30 Kwietnia 2010 Udostępnij Opublikowano 30 Kwietnia 2010 Opisz jak "świruje", bo sam algorytm jest ok. A, nie powinno być przypadkiem pi/180? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Crackkk-GM Opublikowano 30 Kwietnia 2010 Udostępnij Opublikowano 30 Kwietnia 2010 A degtorad gdzie? sry, jest. (angle*pi) / 180 <_< float angle = (direction * Math.PI)/180; x += (int)(Math.Cos(angle) * speed); y -= (int)(Math.Sin(angle) * speed); Już powinno styknąć. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Marcin1147 Opublikowano 30 Kwietnia 2010 Autor Udostępnij Opublikowano 30 Kwietnia 2010 Nadal kupa. Gdy direction=0 wtedy grafika porusza się w prawo, gdy dam np. 45 to wtedy staje w miejscu :( Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Crackkk-GM Opublikowano 30 Kwietnia 2010 Udostępnij Opublikowano 30 Kwietnia 2010 Musi być dobrze, ja mam na tej zasadzie w silniku i styka, oO. float angle = (direction * Math.PI)/180; x += (int)(Math.Cos(angle) * speed); y += (int)(Math.Sin(angle) * speed); Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Marcin1147 Opublikowano 30 Kwietnia 2010 Autor Udostępnij Opublikowano 30 Kwietnia 2010 Dobra, już działa. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
waxx Opublikowano 30 Kwietnia 2010 Udostępnij Opublikowano 30 Kwietnia 2010 Przechowuj pozycje we float przy obliczeniach anyway. Taki protip. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Rekomendowane odpowiedzi
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ę