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

SDL2 tile map, kolizja

Object Storage Arubacloud
0 głosów
784 wizyt
pytanie zadane 29 sierpnia 2017 w C i C++ przez eldonKarleon Nowicjusz (120 p.)

Cześć, ostatnio próbuję zrobić platformówkę z czytaniem mamy z pliku tekstowego. Niestety zatrzymałem się na problemie, który mnie przerósł. A mianowicie kolizje. Rozumiem ogólny zamysł, jeśli player right < map left itd wtedy jest false (nie ma kolizji), else jest true. Tylko w moim kodzie czegoś brakuje. Niestety nie moge wymyślić czego. Tak to wygląda https://pastebin.com/dEFetzy86

Wyjaśnienie - mam 2 mapy (w jednym pliku tekstowym), mapa klocków, jeśli 0 wtedy nie ma niczego jeśli 1 wtedy jest pierwszy blok, 2 drugi itd.
mapa kolizji, jeśli 0 wtedy nie ma kolizji jeśli 1 kolizja jest.

w sprawdzaniu kolizji loopuje przez całą tablicę i sprawdzam czy jest == 1. Jesli jest wtedy jest kolizja, czyli zapisuje hitboxy każdego klocka.

Config::getSM(), zwraca instancje klasy ScreenManager, która jest odpowiedzialna za wszystkie screeny, czytaj menu, opcje, wyjście, gre.
od tego ->GetGame(), zwraca instanjce do GameplayScreen, czyli naszej mapy.

W update postaci, od left i right odejmuje Config::getSM()->GetGame()->getPosX() (pozycja X mapy, getPosY() oznacza pozycje Y mapy), ponieważ mapa się przesuwa (cofa) jeśli postać dojdzie do środka i idzie w prawo.

i sprawdzam w ifie jeśli checkCollision z right lub left == false (nie ma kolizji) wtedy mogę iść swobodnie, jeśli == true, znaczy, że nie moge iść swobodnie.

Gdy włączam grę, kolizja zwraca zawsze fałsz, nieważne co zrobię, w konsoli zawsze jest napisane “NIE MA KOLIZJI”.

Potrzebowałbym jakiegoś nakierowania co tutaj może być źle napisane, jak powinienem zmienić kod żeby był bardziej uniwersalny, w sensie, żebym mógł dodawać np. platformy do tego, chodzenie po drabinkach, kolizje innego typu, np. SAT albo capsule. Chciałbym właśnie kolizje zrobić w taki sposób jak teraz jest pokazany, w sensie, że w klasie gracza sprawdzamy ifem czy kolizja jest false, bo wtedy wydaje mi się, że łatwiej byłoby dodatkowo coś dołożyć. W kodzie jest przedstawiony update poruszania się tylko w prawo. Jeśli wytłumaczyłem coś źle, proszę mnie poprawić/pytać.
Tilowanie (mapy, nie kolizji) mam zrobione na zasadzie, że w zdjęciu mam 32 piksele wolne (przezroczyste pole, oznaczające pustkę na mapie, czyli nie ma kolizji).
Może powinienem zamiast 0 zamienić w pliku tekstowym na -1, a 0 zrobić też jako klocek. Ogólnie to bardzo bym chciał zrobić, że 0 to znaczy, że nie ma nic, a 1, 2 itd., że już są normalne klocki. Kwestia estetyczna, bardziej mi się podoba.

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

Podobne pytania

0 głosów
1 odpowiedź 358 wizyt
pytanie zadane 22 grudnia 2020 w C i C++ przez dnaiel Początkujący (400 p.)
0 głosów
1 odpowiedź 263 wizyt
pytanie zadane 23 października 2017 w C i C++ przez Badzonor Obywatel (1,410 p.)
0 głosów
0 odpowiedzi 177 wizyt
pytanie zadane 18 czerwca 2017 w C i C++ przez shout123131 Nowicjusz (120 p.)

92,555 zapytań

141,403 odpowiedzi

319,560 komentarzy

61,940 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!

...