SeaMonster131 Temat założony przez niniejszego użytkownika |
[C++] Obracanie myszką » 2011-10-10 18:56:45 Nie ma co, poddaje sie :p Szukam, kombinuje i nic ;/ Otóż, chciałbym po prostu obracać myszką postać, i naciskając W chciałbym aby postać szła w tamtą stronę :) Hm.. na moje oko, nie wiem jak wyliczyć kąt obrócenia :) Na razie mam coś takiego: float v = 0, kat = 0; int x = 300, y = 300;
if( al_key_down( & klaw, ALLEGRO_KEY_W ) ) v += 0.1;
if( al_key_down( & klaw, ALLEGRO_KEY_S ) ) v -= 0.1;
kat = x - atan2( mysz.x, mysz.y );
x += v * cos(( kat * ALLEGRO_PI ) / 180 ); y += v * sin(( kat * ALLEGRO_PI ) / 180 );
al_draw_rotated_bitmap( lud, 46 / 2, 48 / 2, x, y, kat, 0 );
Funkcji trygonometrycznych nie znam :) Wyczytałem, że to oblicza kąt alfa z przy- i przeciwprostokątnych w trójkącie, tylko nie wiem jak mam to wykorzystać. Po prostu wyczytałem z Google, warsztatu i z tego forum różne rzeczy i "coś" wykombinowałem :) Niestety te "coś" mi nie działa ;p Z góry naprawdę dzięki :) |
|
DejaVu |
» 2011-10-10 19:03:45 Taki sam problem był już rozwiązany na forum... |
|
SeaMonster131 Temat założony przez niniejszego użytkownika |
» 2011-10-10 19:07:53 No właśnie wiem! Ale przeszukałem 20 str i nic, szukałem w wyszukiwarce i nic :p dlatego sie poddaje :) Nawet pamietam jak ktoś dał gotowy kod, ale nie znalazłem nic ;/ |
|
DejaVu |
» 2011-10-10 19:13:44 |
|
SeaMonster131 Temat założony przez niniejszego użytkownika |
» 2011-10-11 15:54:44 Dobra, obejrzałem te str co Pan podał oraz pare innych. I Udało mi się napisac coś takiego: kat = - al_fixatan2( al_ftofix( y - mysz.y ), al_ftofix( x - mysz.x ) );
al_draw_rotated_bitmap( lud, 46 / 2, 48 / 2, x, y, kat / 360, 0 );
Można powiedzieć, że jest prawie dobrze, właśnie..prawie. Niby ładnie się obraca, ale za szybko. Więc próbowałem różne rzeczy dzielić przez różne liczby, ale bez skutku :( Wiem tylko tyle, że kąt 0 stopni jest gdy postać jest w lewo, wtedy jest ok. Ale gdy już ruszam myszką np do góry, to postać obraca się za szybko... Ja jeszcze bede tutaj dalej kombinował i szukał, ale każda pomoc się przyda :) |
|
OSA_PL |
» 2011-10-11 17:23:06 Weź sobie jakąś zmienną, w której będziesz przechowywał kąt obrócenia bitmapy i dopóki wartość zmiennej nie równa się oczekiwanemu kątowi zmniejszaj ją lub zwiększaj wedle potrzeby. |
|
SeaMonster131 Temat założony przez niniejszego użytkownika |
» 2011-10-11 17:51:19 Fiu fiu, trochę się namęczyłem ALE SIĘ UDAŁO :) Dzięki każdemu kto się wypowiedział :) Rozwiązanie: kat = atan2( y - mysz.y, x - mysz.x );
x += - v * cos( kat ); y += - v * sin( kat );
al_draw_rotated_bitmap( lud, 46 / 2, 48 / 2, x, y, kat, 0 ); Nie wiem jak do tego doszedłem, ale udało się! :) |
|
« 1 » |