Autor Wątek: Kolizje z mapą kolizji  (Przeczytany 578 razy)

Offline VinR

  • Użytkownik

# Wrzesień 18, 2009, 20:59:33
Czy może mi ktoś powiedzieć jak napisać kolizje z mapą kolizji? Mam dwie tablice jedna przechowuje numer obrazka w tilesecie,
 który ma wyświetlić, a druga przechowuje informacje o tym czy da się stanąć na tym "obrazku" tablica przyjmuje wartości 0 - brak kolizji,
1 - kolizja. Nie proszę o gotowe rozwiązanie tylko o to żeby mi ktoś to wytłumaczył :D

Edit by C: Wątek wydzieliłem. Dołączanie pytań do istniejących wątków nie jest zbyt dobrą praktyką. :)
« Ostatnia zmiana: Wrzesień 18, 2009, 21:21:30 wysłana przez Charibo »

Offline Mr. Spam

  • Miłośnik przetworów mięsnych

Offline MatiSSJ

  • Użytkownik

# Wrzesień 18, 2009, 21:16:19
No to przykladowo:
Jesli strzalka w gore i tiles (x, y+1) == 1
Nie idz
W przeciwnym wypadku
Idz
//i tak dalej...

Offline taki_tam

  • Użytkownik

# Wrzesień 18, 2009, 22:49:13
To zależy czy gracz jest np. punktem materialnym w kształcie jakiejś elipsy czy coś.

Ja zrobiłem to na zasadzie:
- W edytorze map(u mnie mapa z poligonów ale tilesy również mogą być poligonami, prawda? ;) ) klikając na poligon można przypisać mu
  czy da się z nim zderzyć i fizyczne właściwości (tarcie i restytucje - przez co można wszelakie powierzchnie tworzyć jak beton, piach,
  lód itd.).

- Mapę kolizji tworzę w sposób(w grze):
* W pętli sprawdzam które poligony są kolizyjne.
* Tworzę tablicę jego wierzchołków.
* Ze wzory na środek ciężkości wyznaczam pozycję poligonu (wiem dziwna metoda, ale szybka i sprawna ;) )
* Mając pozycję poligonu liczę pozycje jego wierzchołków w lokalnym układzie współrzędnych(pozycja poligonu - dany wierzchołek)
* Tworzę listę tych poligonów i wsadzam wszystko do SAT'a

Z czymś takim ciała sztywne, punkty materialne mogą pięknie reagować ; ]
Link do edytora(stara wersja, bez możliwości tworzenia map kolizji): http://www.warsztat.gd/projects.php?x=view&id=779

Pozdrawiam! ;) taki_tam

Offline VinR

  • Użytkownik

# Wrzesień 19, 2009, 18:20:12
Problem rozwiązałem metodą prób i błędów :D Jakby ktoś miał kłopoty z napisaniem czegoś takiego w C++/Allegro niech pisze na PW