Efekty kolizji
Ostatnio zmodyfikowano 2013-03-01 16:03
DarkYoung Temat założony przez niniejszego użytkownika |
Efekty kolizji » 2013-03-01 15:33:43 Chyba się zawiedziecie, ale nie chodzi o kolejny post z wykrywaniem kolizji ;)
Więc tak, przetrząsając to forum, internet i wszystkie inne źródła, wykrywanie kolizji nie jest mi już obce (przynajmniej takie wykrywanie które mi aktualnie było potrzebne). Nie jest mi też obce (przynajmniej częściowo) co zrobić, gdy taka kolizja jest już wykryta. To częściowo polega na tym, że o ile po zderzeniu dwóch obiektów wywołanie dla nich odpowiednich metod związanych z kolizją nie stanowi problemu, to problem pojawia się, gdy kolizja niesie ze sobą efekty które dotyczą nie tylko zderzonych obiektów.
Może trochę jaśniej: Przykładowo. Mamy obiekt pocisk. Mamy obiekt pocisk. Pocisk zderza się z beczką. Wykryta kolizja. Pocisk znika, beczka wybucha. Niby end of story, ale lata grywania w wszelakiej maści gry, setki filmów i seriali, a także nauka płynąca z życia codziennego uświadamia nam, że taka wybuchająca beczka jest całkiem śmiercionośna. Więc wypadałoby, żeby okolica takiej beczki została zdemolowana, a pobliska masa żywa (lub i nie, zależy oczywiście od konwencji gry ;) ) została unicestwiona. I tu pojawia się pytanie, jak to zorganizować. Myśląc nad tym problemem doszedłem do dwóch rozwiązań problemu: -do metody kolizji beczki dać jako argumenty kontenery z obiektami. Niech beczka sama sobie poszuka co ma zniszczyć -zrobić jakiś menadżer kolizji(zdarzeń?) w którym zarządzane byłby efekty "globalne"(wychodzące poza skolidowane obiekty) dla danej kolizji
Jak takie coś zorganizowane jest w profesjonalnych produkcjach (tych 2D, 3D to na razie pewnie inna bajka)? Jakieś słowo klucz nawiązujące do problemu? Bo moje poszukiwania zazwyczaj kończyły się na czyichś problemach z wykryciem kolizji, a nie z jej efektami. |
|
mactec |
» 2013-03-01 15:53:59 I tu pojawia się pytanie, jak to zorganizować. |
To już zależy jak piszesz grę. np. Jeśli beczka jest częścią mapy to traktujesz ją tak jak obiekt mapy z którym kolidujesz tylko pozycje i wielkość tego obiektu ustawisz na duża większą(czyli obręb wybuchu). |
|
Wasilek |
» 2013-03-01 16:03:52 Nie wydaje mi się, aby to był jakiś problem :P Jeżeli masz współrzędne beczki i każdego obiektu zniszczalnego (czy tam takiego, które ma otrzymać obrażenia) to po prostu liczysz przykładowo pitagorasem odległość beczki od obiektu i jeżeli jest odpowiednio blisko to zadajesz mu obrażenia. |
|
« 1 » |