Sterowanie ludzikiem C++ Allegro

0

Mam problem ze stworzeniem funkcji odpowiadającej za sterowanie - chodzi mi o płynne poruszanie ludzikiem.
Klawiszami prawo i lewo ustawiam stronę, w którą ludzik patrzy - natomiast strzałka w górę i w dół powoduje ruch w kierunku w którym ustawiłem go strzałkami lewo i prawo.
A więc mój ludek, ma chodzić po ukosie - w kierunku ustawionym przez strzałki.

Programuję w C++ Allegro i aktualnie mam coś takiego :
(Potrafię obrócić ludzikiem w prawo i w lewo oraz poruszać się w górę i w dół - natomiast nie wiem jak zrobić, aby poruszał się w kierunku wyznaczonym przez obrót - klawisze lewo i prawo) :
[code]
if ( key[KEY_UP])
{

           y--;
           }
           
           if( key[KEY_DOWN]) 
           {
           y++;    
               }
           
           if( key[KEY_LEFT]) 
           {
               obrot = obrot - 0.5; 

               }
           
           if( key[KEY_RIGHT])
           {
               obrot = obrot + 0.5; 
 
               }
           rotate_sprite( screen, obiekt, int (x), int(y), itofix( int(obrot)) );[/code]

Podejrzewam, że trzeba będzie skorzystać z funkcji trygonometrycznych - próbowałem, ale bez skutecznie (coś mi nie wychodziło).

Jeżeli ktoś nie zrozumiał to wrzucam screen - jeżeli graliście np. w gta2 to chodzi mi o takie samo sterowanie - tzn. strzałkami lewo i prawo nie poruszam człowiekiem tylko ustalam kierunek. Natomiast klawisze przód i tył służą do poruszania :
user image

0

Hmm wydaje mi się, że tutaj nie trzeba funkcji trygonometrycznych bo pixele są tak ułożone "sztywno", że nie uszło by pewnie sterować obrazkiem w danym kierunku. Od pixela są 4 strony kierunku (N,S,W,E) i tym sie posługuj : ) Co innego w grach 3D, wtedy jak najbardziej trzeba obliczyć dwa wektory, podzielić je w funkcji atan(...); i masz kierunek ;)

0

chyba bez matematyki się nie obejdziesz : masz tu coś http://www.dimmension3.spine.pl/modules.php?name=Tutorials&wtd=show_tutorial&nr=19

0

Tylko, że mnie nie chodzi o 3d ale o widok 2d - z lotu ptaka.

1 użytkowników online, w tym zalogowanych: 0, gości: 1