Autor Wątek: Kolizje między dwoma bloczkami  (Przeczytany 1128 razy)

Offline diego997

  • Użytkownik

# Marzec 03, 2012, 18:05:14
Dziwna sytuacja wykrywanie kolizji zrobiłem natomiast nie potrafię tego wykorzystać. Bloczek B jest zawieszony w powietrzu i ma być traktowany jako podłoże, a więc bloczek A gdy na niego skoczy przestaje spadać gdy ,,podejdzie go z lewej strony,, przestaje się w tą stronę poruszać itd. Chodzi właśnie o to jak sprawić aby program wiedział z której strony nastąpiła kolizja. Czy z prawej z lewej bądz z góry lub dołu. Od 3h szukam czegoś na ten temat i wszędzie piszą o wykrywaniu kolizji a ja wykrywanie mam tylko powtórzę się jak to wykorzystać ? Z góry dzięki

Offline Mr. Spam

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

Offline Vipa

  • Redaktor

# Marzec 03, 2012, 18:09:53
Przed poruszeniem bloczka A sprawdzasz czy nastąpi kolizja. Jak nastąpi to masz kierunek z którego idziesz. Jeżeli ruszałeś się w lewo to kolizja nastąpiła z prawej strony bloczka B. ?

Offline diego997

  • Użytkownik

# Marzec 03, 2012, 18:33:27
Ok to proste, a jak poruszam się pod kątem np skacze i w prawo ? :D To jeżeli klocek jest nade mną to istnieją dwie możliwości, mogę w klocek B uderzyć górą lub prawym bokiem(załóżmy że jest na tyle wysoko iż na niego nie wpadne I jak to wtedy ustalić :D?

Offline Vipa

  • Redaktor

# Marzec 03, 2012, 19:23:41
Qrde forum strasznie przycina :) ale może się uda odpowiedzieć.
Dzielisz kolizje na mniejsze, które są badane tylko w przypadku wykrycia większych. Słowem jeżeli bloczek A koliduje z bloczkiem B to sprawdzać możesz poszczególne elementy bloczka B (albo bloczka A rzecz jasna, zależy do czego chcesz się odnieść). Bryły kolizji są z reguły uproszczone więc możesz objąć obiekt kolidujący np. prostopadłościanem i wybadać osobno kolizje z każdą ze ścian.

Jeżeli potrzeba by była ślizgania się po powierzchni to już musisz rozbić ruch na każdą oś i badać osobno. Jeżeli nastąpiła kolizja to przesuwasz obiekt do momentu jej wystąpienia i badasz drugi raz dla której składowej ruchu występuje kolizja. Jeżeli w jakiejś osi obiekt może podążyć to nie trzeba go blokować.
Jeżeli chcesz badać odbicie od powierzchni blokującej to obliczasz kąt bazując na kącie poruszania się i kącie powierzchni odbijającej.
Jeżeli chcesz zastopować po prostu bloczek A to w momencie wystąpienia kolizji dzielisz ruch na mniejsze i stopujesz A w momencie wystąpienia pierwszej kolizji.