Autor Wątek: Kolizje szybko poruszających się obiektów.  (Przeczytany 1619 razy)

Offline taki_tam

  • Użytkownik

# Czerwiec 24, 2008, 18:44:45
Siemka! ;)

Słowem wstępu. Robię swego rodzaju strzelankę. Pocisk to punkt materialny.
Używam integracji Verleta.

Sprawa jest dla mnie dość ciężka, bo pociski z reguły przemieszczają się bardzo szybko.

W jaki sposób wykrywać kolizje pocisku z graczem? Jak rozwiązano to w grze Soldat?(przykładowo, nie robie klona ;])
Chodzi mi o to że w mojej grze gracz również będzie niedużym obiektem przez co pocisk w łatwy sposób może przelecieć
przez gracza nie wykrywając kolizji.

Jak polecalibyście to zrobić?
Ew. może macie pod ręką jakiś tutorial?

PS. Załączam demko z mojego engina fizycznego. Na demku będzie można zauważyć mój problem z szybko poruszającymi się obiektami. Zmaksymalizujcie sobie okno z demkiem.
http://www.yousendit.com/transfer.php?action=check_download&ufid=648EE9AC62585AD7&key=abfb844656cec9a2e40bca3bfd0f225e3e2c6b85

Pozdrawiam! ;)

Offline Mr. Spam

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

yfan

  • Gość
# Czerwiec 24, 2008, 18:49:55
Jeśli tot ylko pociski to continous collision detection wystarczy. Czyli ciągniesz prostą, odcinek, tzw. promień (lol) i szukasz punktu na niej/nim w którym nastąpiła kolizja.


Offline taki_tam

  • Użytkownik

# Czerwiec 24, 2008, 18:58:52
Nie wiem czy dobrze rozumiem(zaraz się zagłębię bardziej) ale podkreślam że na pocisk również będą działać siły.
Więc pocisk będzie kreślić krzywe, a jak wiadomo przy wyznaczeniu odcinka mogą wyjść przekłamania.

yfan

  • Gość
# Czerwiec 24, 2008, 19:06:59
Obejrzałem twoje demko i widzę, że do wykrywania kolizji uzywasz linii. Skoro tak, należałoby sprawdzać, czy odcinek tworzony przez pozycję pocisku w aktualnej klatce i pozycję pocisku w poprzedniej klatce nie przecina się z liniami upraszczającymi figurkę gracza (podobnie z geometrią terenu).

Znacznie łatwiej jest jednak rozpatrywać kolizje nie na liniach, a na pełnych wielokątach. W ten sposób problem pocisku poruszającego sie zbyt szybko marginalizuje się do prędkości, przy których w ciągu jednej klatki przekracza on cały wielokąt, co można ominąć gameplayowo i od strony projektu leveli. Poczytaj o SAT (tutoriale metanetu, i "polycolly").

Offline taki_tam

  • Użytkownik

# Czerwiec 24, 2008, 19:11:17
Dobra już wszystko czaję, dzięki! ;)

Pozdrawiam! ;)

Offline taki_tam

  • Użytkownik

# Czerwiec 24, 2008, 23:52:51
Sorka że tak 2 razy z rzędu.

Dla tych którzy jeszcze nie napisali silnika fizycznego a chcieliby to łapcie art którym ja się podpierałem.
Zamieszczam na moim serwerze ale długo go tam trzymać nie będę więc jak co to sobie zapiszcie(Ci którzy są zainteresowani).

http://kompustelnik.unit1.pl/physic/rigid_body_demo.htm

Pozdrawiam! ;)