C++ poruszanie się postaci w kierunku myszki
Ostatnio zmodyfikowano 2013-12-22 16:11
minimaxHAWK Temat założony przez niniejszego użytkownika |
C++ poruszanie się postaci w kierunku myszki » 2013-12-21 17:56:10 Podczas tworzenia własnej gry w allegro 4 (2d, widok z lotu gołębia, porusza się mapa, czyli obrazek w tle, gracz jest cały czas w miejscu) natrafiłem na poważny problem: Nie jestem w stanie napisać algorytmu odpowiadającego za przemieszczanie się w stronę (aktualnych współrzędnych) myszki. W kodzie zaimplementowane jest już liczenie kąta względem myszki. fragment: liczenie kąta player.x = SCREEN_W / 2; player.y = SCREEN_H / 2; player.angle = 0; player.angle = - fixatan2( ftofix( player.x - mouse_x ), ftofix( player.y - mouse_y ) );
fragment: poruszanie się if( key[ KEY_W ] ) { mapa_x -= r2 * sin( fixtof( player.angle ) * M_PI / 180.0 ); mapa_y += r1 * cos( fixtof( player.angle ) * M_PI / 180.0 ); myszka(); }
r2 i r1 oznaczają prędkość, ma stałą wartość 10 mapa_x i mapa_y oznaczają współrzędne mapy (obrazka bmp) myszka(); to powtórne policzenie/pobranie współrzędnych Po kompilacji program działa w miare normalnie, chodzenie przypomina chodzenie strzałkami( if( key[KEY_UP]) mapa_x++; itd.) tylko odwrócone o 45 stopni. Proszę o pomoc. |
|
minimaxHAWK Temat założony przez niniejszego użytkownika |
Ok, mam » 2013-12-22 16:11:48 Przeglądając allegro.cc natrafiłem na podobny do mojego problem, mój kod zmodyfikowałem, teraz wygląda to tak: if( key[ KEY_W ] ) predkosc++;
if( key[ KEY_S ] ) predkosc--;
double bullet_direction = atan2( mouse_y - player.y, mouse_x - player.x );
mapa_x -= predkosc * cos( bullet_direction ); mapa_y -= predkosc * sin( bullet_direction );
Teraz wszystko działa. |
|
« 1 » |