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

SFML, sprawdzanie kolizji dla wielu obiektów

0 głosów
102 wizyt
pytanie zadane 28 grudnia 2016 w C i C++ przez prownnie Początkujący (290 p.)

Witam, ostatnio bawiłem się trochę SFML'em i napisałem podstawy do platformówki, czyli menu, jakieś tam kolizje i ruch postaci.

Sprawdzanie kolizji wygląda tak:
1. Określenie przemieszczenia, które ma się wykonać.

2. Sprawdzenie, czy po przemieszczeniu obiekt nie będzie kolidować ze ścianą.

3. Jeśli obiekt nie koliduje ze ścianą, to następuje ruch.

I na razie w punkcie drugim sprawdzam kolizje tylko dla obiektu klasy Player. Ale chciałbym dodać również inne obiekty, boty. Jak powinienem sprawdzać te kolizje, aby było elegancko? Napisać polimorficznie klasę obiekt, która będzie wskazywać po kolei, w pętli na obiekty klasy: gracz, bot1, bot2, bot3 i sprawdzać je po kolei?

Jak to zapisać? Przykładowo, sprawdzanie, dla wielu obiektów, czy nastąpiła kolizja, powinno wyglądać jakoś tak?

Jak stworzyć tablicę wielu obiektów z różnych klas?

for (int i=0;i<ilosc_obiektow;i++)
{
obiekt=&tablica[i];

if (kolizja==true)

obiekt->stop();

}

Czy może istnieje jakiś lepszy sposób?

1 odpowiedź

0 głosów
odpowiedź 28 grudnia 2016 przez Pajdas Mądrala (6,020 p.)
Boty i gracz mogą dziedziczyć z jednej klasy i w takim przypadku będziesz sprawdzać kolizję botów tak, jak samego gracza.

Zauważ, że idąc w prawo możesz kolidować tylko z lewymi ścianami, a idąc w lewo - z prawymi.
Takie rozdzielenie może zwiększyć wydajność, ale musisz to mądrze zakodować.

Dobrze też aby sprawdzanie kolizji było kilkupoziomowe bo sprawdzanie kolizji wszystkich obiektów ze wszystkimi jest trochę nie wydajne.

Podobne pytania

0 głosów
1 odpowiedź 243 wizyt
pytanie zadane 8 czerwca 2016 w C i C++ przez Kyoya Początkujący (260 p.)
0 głosów
1 odpowiedź 49 wizyt
pytanie zadane 1 dzień temu w C i C++ przez seba360pl Nowicjusz (220 p.)
0 głosów
1 odpowiedź 176 wizyt
pytanie zadane 27 lipca 2015 w C i C++ przez Sklo Nowicjusz (190 p.)

42,435 zapytań

81,740 odpowiedzi

162,232 komentarzy

20,380 pasjonatów

Przeglądających: 292
Pasjonatów: 32 Gości: 260

Motyw:

Akcja Pajacyk

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

Oto dwie polecane książki warte uwagi. Pełną listę znajdziesz tutaj.

...