• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Tor lotu pocisku wystrzelonego ze statku w grze 2D

Object Storage Arubacloud
0 głosów
271 wizyt
pytanie zadane 26 czerwca 2017 w C i C++ przez michal06011997 Nowicjusz (210 p.)
Witam! Napotkałem problem podczas tworzenia gry 2D, która polega na ruszaniu się statkiem i celowaniu w przeciwników. Stanąłem przy wystrzale pocisku ze statku, mianowicie: pocisk (wizualnie) zostaje wystrzelony ze statku, jednak (tu jest problem) kiedy ruszam statkiem pocisk leci do przodu ale porusza się na boki tak samo jak statek. Czyli pobieram do pocisku tylko 1 współrzędną ze statku, która jest cały czas aktualizowana. Czy jest sposób, w który da radę tę współrzędną "usztywnić" ? Piszę to w C++ Builderze 6. Z góry dziękuję za odpowiedzi i przepraszam jeżeli przeoczyłem gdzieś już taki temat lub nie znalazłem odpowiedzi na moje pytanie w innym temacie. Pozdrawiam.
komentarz 26 czerwca 2017 przez Milesq Nałogowiec (32,020 p.)
C++ builder... naucz się może biblioteki graficznej może Sdl?
komentarz 26 czerwca 2017 przez niezalogowany
W czasie wystrzelenia pobierz tą konkretną składową prędkości. Nie pobieraj jej po tym gdy już leci.
komentarz 26 czerwca 2017 przez michal06011997 Nowicjusz (210 p.)
edycja 26 czerwca 2017 przez michal06011997

Nie jestem pewien czy mówimy o tym samym sad Animacje lotu pocisku aktywuję za pomocą spacji. 

void __fastcall TForm1::Timer_pociskmTimer(TObject *Sender)
{
        pozycja=spaceship->Left;

        if(p==1)
        {
        p1->Visible=true;

                 if(lec<=50)
                 {
                        p1->Left = pozycja;
                        p1->Top-=10;
                        lec--;

                 }

        }
}

Pobrałem ją przy naciśnięciu spacji. Mam tu jakiś błąd w rozumowaniu dalej? p1 to jest mój pocisk.
Rozumiem, że propozycja tej biblioteki niesie za sobą porzucenie C++ Buildera?

1
komentarz 26 czerwca 2017 przez niezalogowany
edycja 26 czerwca 2017

Rzeczywiście trochę inaczej sobie to wyobrażałem. W każdym kroku czasowym pobierasz nowe położenia takie same jaki aktualnie ma statek. Pobieraj tylko raz w momencie strzału (możesz zrobić funkcję strzał, która nada położenie i predkosc). Wtedy w timerze będziesz miał coś takiego: 

void __fastcall TForm1::Timer_pociskmTimer(TObject *Sender)
{
        pozycja=spaceship->Left;
 
        if(p==1)
        {
        p1->Visible=true;
 
                 if(lec<=50)
                 {
   
                        p1->Top -= predkosc_pocisku_y; // lub predkosc_pocisku_y*dt  - gdzie dt krok czasowy
                        lec--;
 
                 }
 
        }
}

C++ Builder jest trochę toporny i raczej nie jest łatwo w nim robić gry. Porzucenie go jest konieczne jeżeli chcesz wynieść jakieś doświadczenie i naprawdę coś zrobić w miarę łatwo - możesz wybrać np. SFML, SDL. Jednak proponuję poćwiczyć trochę programowanie obiektowe, bo np taki statek czy pocisk powinny być osobnymi obiektami ;) 

komentarz 26 czerwca 2017 przez michal06011997 Nowicjusz (210 p.)

Dzięki wielkie, udało się laugh Robiłem również błąd próbując to wcisnąć do zegara od animacji lotu pocisku zamiast do OnKeyDown ze spacją :)

komentarz 26 czerwca 2017 przez Milesq Nałogowiec (32,020 p.)
p1.

p1 to wskażnik i nigdy nie będzie równy 1 zrób w tym if'ie if(*p1==1)
komentarz 26 czerwca 2017 przez michal06011997 Nowicjusz (210 p.)

Tam jest p==1 a nie p1==1 laugh

komentarz 26 czerwca 2017 przez Milesq Nałogowiec (32,020 p.)
a p to zmienna wskaźnikowa czy normalna?
komentarz 27 czerwca 2017 przez michal06011997 Nowicjusz (210 p.)
Zwykła zmienna,  jest to numer pocisku.

Zaloguj lub zarejestruj się, aby odpowiedzieć na to pytanie.

Podobne pytania

+1 głos
4 odpowiedzi 449 wizyt
pytanie zadane 9 grudnia 2015 w Algorytmy przez Adriqun Początkujący (290 p.)
0 głosów
0 odpowiedzi 48 wizyt
0 głosów
1 odpowiedź 488 wizyt
pytanie zadane 3 stycznia 2021 w C i C++ przez michal100032 Początkujący (390 p.)

92,576 zapytań

141,426 odpowiedzi

319,652 komentarzy

61,961 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...