Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[Allegro] Przemieszczanie obiektów pod kątem (skręcanie, obracanie)

Ostatnio zmodyfikowano 2008-07-22 01:58
Autor Wiadomość
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? 
P-773
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.
P-774
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
P-777
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:
C/C++
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 :)
P-779
dudek
» 2008-05-23 12:18:20
Tak jest napewno. Nawet w przykladowych programach widzialem przykladowy kod z obrotem. Musisz poszukac
P-780
DejaVu
» 2008-05-23 12:24:38
Przemieszczanie obiektu pod kątem:
C/C++
#include <math.h>
//(...)
double predkosc = 1.23;
double kat = 123.0; //w stopniach
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 );
P-781
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?
P-1009
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.

C/C++
#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();
P-1035
« 1 »
  Strona 1 z 1