maciek1316 Temat założony przez niniejszego użytkownika |
[Allegro] Przemieszczanie obiektów pod kątem (skręcanie, obracanie) » 2008-05-22 18:20:06 jak zrobić aby obiekt(np samochód) podczas przyciśnięcia przycisku(np prawo, lewo, góra, dół) zmieniał położenie czyli był ustawiony przodem do danego kierunku i poruszał sie w danym kierunku? |
|
DejaVu |
» 2008-05-22 18:43:14 Chodzi Ci o zrobienie obrotu czy co? bo tak jak to opisałeś to wygląda jakbyś chciał przemieszczać punkt tylko w 4 kierunki: góra, dół, lewo, prawo. |
|
maciek1316 Temat założony przez niniejszego użytkownika |
» 2008-05-23 10:24:41 Wiedziałem że źle napisałem:D Tak obrotu. Tak żeby autko skręcało |
|
DejaVu |
» 2008-05-23 10:34:59 Prawdopodobnie w allegro jest funkcja, do rysowania tekstury pod kątem. Na początku poszukaj sobie funkcji, za pomocą której można w allegro rysować tekstury obrócone. Przyjmij, że strzałkami lewo/prawo będziesz zmieniał kąt pod którym jest obrócony obiekt: Pseudo kod: if( strza ł ka_w_lewo ) kat -= 1.0;
if( strza ł ka_w_prawo ) kat += 1.0;
rysuj_obiekt( pozycja_x, pozycja_y,( kat * M_PI ) / 180.0 );
Pamiętaj, że kąty podajesz w radianach do wszystkich funkcji matematycznych i musisz je zamienić ze stopni na radiany. Nie wiem jak jest z biblioteką allegro - będziesz musiał metodą prób i błędów sprawdzić lub przeczytać w dokumentacji. Jak zrobisz już obracanie obiektu w miejscu wieczorem napiszę jak do tego dorobić ruch :) |
|
dudek |
» 2008-05-23 12:18:20 Tak jest napewno. Nawet w przykladowych programach widzialem przykladowy kod z obrotem. Musisz poszukac |
|
DejaVu |
» 2008-05-23 12:24:38 Przemieszczanie obiektu pod kątem: #include <math.h>
double predkosc = 1.23; double kat = 123.0; double pozycja_x = 150.0; double pozycja_y = 100.0;
pozycja_x += predkosc * cos(( kat * M_PI ) / 180.0 ); pozycja_y += predkosc * sin(( kat * M_PI ) / 180.0 );
|
|
darek40bc |
Nie rozumiem » 2008-07-20 19:08:33 Trochę tego nie rozumiem. Jak to wstawić? Może mi ktoś podać jakiś cały przykład? |
|
DejaVu |
Obracanie i poruszanie się obiektu strzałkami pod kątem » 2008-07-22 01:58:43 Poniższy przykład demonstruje obracanie i poruszanie się obiektów pod kątem. #include <allegro.h> #include <math.h>
int main() { allegro_init(); install_keyboard(); set_color_depth( 16 ); set_gfx_mode( GFX_AUTODETECT_WINDOWED, 640, 480, 0, 0 ); install_timer(); BITMAP * bufor = create_bitmap( 640, 480 ); if( !bufor ) { allegro_exit(); return 0; } BITMAP * obrazek = load_bmp( "obrazek.bmp", default_palette ); double predkosc = 0; double kat = 90.0; double pozycja_x = 150.0; double pozycja_y = 100.0; while( !key[ KEY_ESC ] ) { if( key[ KEY_LEFT ] ) kat -= 0.4; if( key[ KEY_RIGHT ] ) kat += 0.4; if( key[ KEY_UP ] ) predkosc += 0.01; if( key[ KEY_DOWN ] ) predkosc -= 0.01; if( predkosc > 5 ) predkosc = 5; if( predkosc <- 3 ) predkosc =- 3; predkosc *= 0.99; pozycja_x += predkosc * cos(( kat * M_PI ) / 180.0 ); pozycja_y += predkosc * sin(( kat * M_PI ) / 180.0 ); clear_to_color( bufor, makecol( 0, 0, 0 ) ); rotate_sprite( bufor, obrazek,( int ) round( pozycja_x ),( int ) round( pozycja_y ), ftofix(( kat * 256 ) / 360.0 ) ); blit( bufor, screen, 0, 0, 0, 0, 640, 480 ); } destroy_bitmap( obrazek ); destroy_bitmap( bufor ); allegro_exit(); return 0; } END_OF_MAIN();
|
|
« 1 » |