[SFML 2.0] Kąty obiektów w ruchu
Ostatnio zmodyfikowano 2013-06-03 13:26
bnk120 Temat założony przez niniejszego użytkownika |
[SFML 2.0] Kąty obiektów w ruchu » 2013-05-28 19:26:33 Witam. Otóż doszedłem do pewnego zastoju w programowaniu. Mam kontener zawierający obiekty oraz funkcję sprawdzającą kolizję między tymi obiektami: for( size_t i = 0; i < Obiekty_gry.size(); ++i ) { for( size_t j = 0; j < Obiekty_gry.size(); ++j ) { if( i != j ) { if( Kolizja.CzyJest( Obiekty_gry[ i ].pos.x, Obiekty_gry[ j ].pos.x, Obiekty_gry[ i ].pos.y, Obiekty_gry[ j ].pos.y ) ) { } } } }
Nie wiem w jaki sposób sprawić, by te obiekty "odbijały się" od siebie w zależności od prędkości np. jednego z obiektów, czy też pozycji w jakiej dany obiekt się znajduję (kolizja od góry, dołu ...). Czytałem już różne posty na temat wyznaczania sinusów i cosinusów, jednak zawsze otrzymywałem niepożądany efekt, taki jak połączenia się obiektów, czy też zwykłego ominięcia kolizji. |
|
DejaVu |
» 2013-05-29 22:52:39 Aby wyznaczyć właściwy kąt odbicia to musisz poczytać o wyznaczaniu normalnych do powierzchni. Ustalenie właściwego kąta odbicia to wbrew pozorom sporo liczenia i zabawy, a skoro chcesz fizykę w miarę sensownie odzwierciedlać to proponuję zainteresować się biblioteką Box2D zamiast walczyć z wiatrakami. Przykład: http://www.vobarian.com/collisions/2dcollisions2.pdf/edit: aa... i dodam jeszcze, że jest mało prawdopodobne, aby ktokolwiek udzielił Ci na forum rzetelnej odpowiedzi na ten temat. Raczej powinieneś skupić się na poszukaniu artykułów, bo temat fizyki w grach jest obszerny, w tym również i kąty odbicia. Alternatywną szansą na uzyskanie rozwiązania jest po prostu wklejenie przez kogoś kodu z własnej gry o ile ten 'ktoś' ma to zaimplementowane jako jeden względnie mały klocek, niezależny od innych części gry. |
|
Mrovqa |
» 2013-05-30 22:49:07 Jeżeli zależy ci na realistycznej fizyce i "by tylko działało", a nie na własnym i dużo gorszym rozwiązaniu, to poczytaj o Box2D ew. do 3D bierz Bullet Physics. |
|
bnk120 Temat założony przez niniejszego użytkownika |
» 2013-06-03 13:26:39 Dziękuję za wszelkie wyjaśnienia. |
|
« 1 » |