Dobre referencje od kolizji 2D
Hej, obecnie Szukam różnych metod implementacji reakcji kolizji w grach wideo 2D, coś podobnego do tego tutoriala Metanet ma: N Tutorial Szukam implementacji czegoś w XNA, ale każdy język byłby w porządku. Bardziej interesuje mnie implementacja programowa niż faktyczna teoria. Wolałbym bardziej przyjazny dla początkujących materiał, ale mile widziane więcej zaawansowanych tematów.
Więc może ktoś zasugerować jakąś dobrą reakcję kolizji 2D artykuły/książki?
(PS: bardziej interesuje mnie odpowiedź niż Detekcja)
7 answers
N tutorial , o którym już wspomniałeś, jest świetnym źródłem na początek. Polecam również bardzo dobry artykuł Wykrywanie kolizji wielokątów 2D . Zawiera świetną implementację C# i przykład wykrywania kolizji wielokątów za pomocą twierdzenia o osi oddzielającej i wyjaśnia niektóre z pojęć lepiej.
Jeśli chodzi o reakcję na kolizję, zależy to od scenariusza. W przypadku gier warto sprawdzić ewentualną kolizję na podstawie aktualna prędkość a następnie po prostu dostosuj rzeczywistą prędkość, aby zapobiec kolizji. Możesz również zaimplementować jakiś efekt "odbicia". W każdym razie prawdopodobnie będzie regulować zarówno prędkość, jak i kierunek obiektu.
Możesz użyć twierdzenia Separating Axis do wykrywania kolizji, a także użyć projekcji wielokąta do znalezienia odległości do celu na określonej osi. (w większości przypadków wektor, na którym się poruszasz).
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-02-01 06:33:56
Bardzo mi się podoba ten, właśnie pojawił się tydzień temu i jest wszystko, czego można chcieć od robienia efektów relatywistycznych:
Http://www.amazon.com/Physics-Game-Programmers-Grant-Palmer/dp/159059472X
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-07-15 00:21:56
Ile szczegółów potrzebujesz? Odpowiedź na niektóre z tych pytań pomoże Ci wyeliminować pakiety, które nie robią tego, czego potrzebujesz.
Czy musisz martwić się o obrót obiektu? Następnie musisz się martwić o ramiona dźwigni, moment pędu, momenty bezwładności i momenty obrotowe.
Czy musisz się martwić deformacją? Następnie musisz przejść do analizy elementów skończonych, naprężeń/odkształceń itp. -- coś, co opisuje jak obiekty reagują wewnętrznie na zewnętrzne siły.
A co z efektami tarcia? Wtedy będziesz potrzebował współczynników tarcia lub ewentualnie modeli prędkości dla oporu powietrza.
Efekty grawitacyjne? Efekty elektromagnetyczne? Inne siły?
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-08-18 16:29:16
Jeśli chcesz uzyskać podstawową odpowiedź na kolizję, oto ona:
for each pair of objects that collide
ask gently to the collision detection lib their interpenetration distance
Apply an impulse (i.e. a force in the duration of the frame) to both objects :
force proportional to penetration depth (you will have to tune the coef by hand)
direction : perpendicular to the collision normal.
application point : the collision point (approximately, since it s not a point anymore but a volume)
integrate (Euler, Verlet, )\
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-08-24 07:23:23
Silniki fizyki są bardzo skomplikowane. Lepiej byłoby użyć istniejącego.
- Farseer (C#, wywodzący się ze starszej wersji Box2D).
- Box2d (C++, posiada wiązania. Net)
- Chipmunk (C, chyba nie ma portu w C#, ale można go zrobić).
Jeśli chcesz używać fizyki w swojej grze, Użyj Farseera lub wiązania Box2D. Jeśli chcesz dowiedzieć się o fizyce, rozważ zrobienie C# portu Box2D, lub Wiewiórka. Jeśli jesteś po prostu ciekawy, cały ich kod jest open source.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-07-16 17:49:42
Ja też Szukałem tych samych informacji, najbardziej użytecznych thing I found so far was
Http://www.myphysicslab.com/collision.html
Najgorsze jest dla mnie tahat to jest bez tarcia (tangent collision impulse tylko normalny impuls) i myślę, że ten z taki impuls tarcia byłby lepszy, ale i tak nie znaleziono poradnika jak poprawnie wdrożyć że
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-05-17 09:25:55