Autor Wątek: Obsługa kolizji - opakowanie w klasy  (Przeczytany 2912 razy)

Offline eMul

  • Użytkownik

# Listopad 27, 2007, 16:46:43
Silnik fizyczny ma wykrywać kolizję pomiędzy grupami spriteów.
Załużmy, że mam SpriteGroup1, SpriteGroup2, SpriteGroup3 i SpriteGroup4.
grupa 1 ma kolidować z 2, grupa 3 z 4 i grupa 4 z 1.

Ma to być uniwersalny silnik kolizji.

Jak to opakowujecie w swoich silnikach?
CollisionManager.add(SpriteGroup1, SpriteGroup2), czy jakoś inaczej?

Offline Mr. Spam

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

Offline eMul

  • Użytkownik

# Grudzień 05, 2007, 20:08:15
Nikt z Was nie pisał silnika do obsługi kolizji?

Offline raver

  • Użytkownik
    • Moja strona domowa.

# Grudzień 05, 2007, 20:37:33
Nie robiłem tego, ale ja bym to w 2d zrobił tak: najpierw tworzysz drzewo czwórkowe, potem sprawdzasz tylko kolizje w sektorze i 4 sąsiadach sektora.

http://en.wikipedia.org/wiki/Quadtree

Offline eMul

  • Użytkownik

# Grudzień 05, 2007, 20:40:20
Ale mi chodyi o samo opakowanie w klasy. A nie o działanie w środku :)

Offline raver

  • Użytkownik
    • Moja strona domowa.

# Grudzień 05, 2007, 20:42:21
http://www.gphysics.com/downloads
Ściągnij sobie box2d, tam masz wszystko co potrzebujesz...

Offline Krzysiek K.

  • Redaktor
    • DevKK.net

# Grudzień 06, 2007, 13:12:36
Ale mi chodyi o samo opakowanie w klasy. A nie o działanie w środku :)
Samo opakowanie w klasy to już kwestia drugorzędna i właściwie to wyłącznie kwestia gustu. :)

Offline Liosan

  • Moderator

# Grudzień 06, 2007, 15:54:10
A mnie taki problem zawsze drążył: mamy hierarchie klas obiektów geometrycznych i zestaw funkcji do wykrywania kolizji które na nich pracują. Można by zastosować dziedziczenie (np. wykrywanie kolizji okręgu z wielokątem gwiaździstym może przebiegać dokładnie tak, jak ze zwykłym), ale myk polega na tym że musiałoby to być dziedziczenie w dwóch kierunkach - przecież zarówno po okręgu jak i po wielokącie może coś dziedziczyć. Można sobie zrobić "wirtualną tablicę funkcji wirtualnych" i się do niej ręcznie odwoływać :) i tyle mi się udało wymyślić... i go nie zastosowałem, bo w praktyce tych klas nigdy nie ma aż tak wiele (a przynajmniej nie takich, gdzie to dziedziczenie miałoby zastosowanie).

Liosan