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

[allegro] Strzelanie i pewny problem z prymitywami

Ostatnio zmodyfikowano 2009-06-20 14:19
Autor Wiadomość
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:

C/C++
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.
P-7825
pekfos
» 2009-06-20 14:05:41
C/C++
clear_to_color( NAZWA_BITMAPY, makecol( 0, 0, 0 ) ); //a nie pliku
to samo w circle()
P-7826
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.
P-7828
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:
C/C++
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ć).
P-7830
« 1 »
  Strona 1 z 1