[allegro] Strzelanie i pewny problem z prymitywami
Ostatnio zmodyfikowano 2009-06-20 14:19
Ju1ian Temat założony przez niniejszego użytkownika |
[allegro] Strzelanie i pewny problem z prymitywami » 2009-06-20 14:03:56 Witam! Wczoraj wzięła mnie ochota na zrobienie strzelanki (2d). Nigdy jej nie robiłem, więc zbytnio nie wiem jak zabrać się za strzelanie. Wiem jak obliczyć którędy pocisk ma lecieć (sin() i cos()), ale nie wiem jak zrobić aby leciał prosto z gracza (ciężko to wytłumaczyć: dobrze leci, ale jak ja przesunę się w bok, to w zwolnionym tempie można zobaczyć że pocisk też przeniesie się w bok). I w tym jest właśnie mój problem. Druga sprawa: Próbuję zrobić ludzika z prymitywów, sylwetkę mam jako kwadrat, a głowę chciałem zrobić jako koło. Niestety koło się nie pojawia. Tym samym sposobem zrobiłem celownik, ale on działał (okrąg + 2 linie). Kod: clear_to_color( player.bmp, makecol( 0, 0, 0 ) ); circle( player.bmp, player.x + 10, player.y + 10, 10, makecol( 0, 22, 22 ) ); Z góry dziękuje za odpowiedzi. Pzdr. |
|
pekfos |
» 2009-06-20 14:05:41 clear_to_color( NAZWA_BITMAPY, makecol( 0, 0, 0 ) );
to samo w circle() |
|
WunM |
» 2009-06-20 14:10:13 pekfos on pewnie ma klasę w której trzyma bitmapę o nazwie brzmiącej bmp jak rozszerzenie pliku. Inaczej by mu się nie skompilowało. Więc to jest coś takiego obiekt.bitmapa. |
|
Ju1ian Temat założony przez niniejszego użytkownika |
» 2009-06-20 14:19:19 michalos13, dokładnie ;) Ale jeszcze jedna sprawa, jednak nawet nie mogę obliczyć trajektorii lotu (wcześniej robiłem w 3d strzelanie i podobny kod działał) ;/ Mój kod: class CBullet { public: bool active; float x, y; float speed; float kat; BITMAP * bmp; void Push() { kat = player.kat; if( mb == 1 ) active = true; if( active ) { speed = 5.0f; x = - sin( kat * M_PI / 128 ) * speed; y = cos( kat * M_PI / 128 ) * speed; } else { x = player.x; y = player.y; } } }; Potem jest obracanie pocisku rotate_sprite();, a wynik jest taki że jak nic nie wcisnę to pocisk jest koło mnie (wtf?), a jak wcisnę to pocisk od razu znajdzie się w lewym górnym rogu ekranu. PS. player.kat jest wyliczany na podstawie atan2(myszka.x-player.x, myszka.y-player.y); (plus tam jeszcze jakieś dokładności typu: +10 itd.) i jest on potrzebny do chodzenia i obracania obrazka Prosiłbym, o szybkie odpowiedzi (nie chcę nikogo poganiać, ale muszę to jak najszybciej skończyć). |
|
« 1 » |