Exigo Opublikowano 9 Czerwca 2010 Udostępnij Opublikowano 9 Czerwca 2010 Mamy bloczek z współrzędnymi x1, y1, x2, y2. Mamy też piłkę, ewentualnie klocuszek - też posiadającą pozycję x1, y1, x2, y2, oraz prędkość pionową i poziomą. A pytanie jest takie - jak z pomocą tych danych wykryć czy kolizja pomiędzy bloczkiem, a kulką ma miejsce w osi pionowej czy poziomej? (cel w tym że chcę na podstawie tych zmiennych zwrócić odbicie klocka) ; D Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
waxx Opublikowano 9 Czerwca 2010 Udostępnij Opublikowano 9 Czerwca 2010 predkosc po odbiciu V' = V - 2n(V o n) gdzie n to ten wektor normalny powierzchni a V pilki, a o iloczyn skalarny ahm nvm jezeli masz tylko bloczki osiowo wystarczy ze bedziesz robil cos w stlyu ruchPoY(); if(kolizja) odwroc predkosc na osi y ruchPoX() if(kolizja) odwroc predkosc na osi x Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Exigo Opublikowano 9 Czerwca 2010 Autor Udostępnij Opublikowano 9 Czerwca 2010 Nie w tym rzecz, prawdopodobnie źle mnie zrozumiałeś. Obiekt nie zmienia pozycji "albo tylko i wyłącznie po x, albo tylko i wyłącznie po y". Załóżmy że piłka porusza się jednocześnie w obydwu osiach. Przykładowo uderza od spodu, i używając twojej koncepcji - odbije się jednocześnie w osi pionowej jak i poziomej. W efekcie będzie się poruszać tą samą drogą którą 'przyleciała', tylko że w odwrotnym kierunku. Dlatego chcę uzyskać coś, co będzie sprawdzać z której strony piłka uderza (czy z góry, z prawej, etc.) - dzięki czemu będę mógł ustalić 'odwracanie' odpowiednich prędkości. Więc, jakieś pomysły? ; D Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
waxx Opublikowano 9 Czerwca 2010 Udostępnij Opublikowano 9 Czerwca 2010 Prędkość jest wektorem. To wiesz chyba z I klasy gimnazjum fizyki? Pozycja.X += Predkosc.X * deltaT; if(Kolizja) {Pozycja.X -= Predkosc.X * deltaT; Predkosc.X *= -1; } //cofnij i odwroc Pozycja.Y += Predkosc.Y * deltaT; if(Kolizja) {Pozycja.Y -= Predkosc.Y * deltaT; Predkosc.Y *= -1; } //cofnij i odwroc Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Jaklub Opublikowano 9 Czerwca 2010 Udostępnij Opublikowano 9 Czerwca 2010 Prędkość jest wektorem. To wiesz chyba z I klasy gimnazjum fizyki? Pozycja.X += Predkosc.X * deltaT; if(Kolizja) {Pozycja.X -= Predkosc.X * deltaT; Predkosc.X *= -1; } //cofnij i odwroc Pozycja.Y += Predkosc.Y * deltaT; if(Kolizja) {Pozycja.Y -= Predkosc.Y * deltaT; Predkosc.Y *= -1; } //cofnij i odwroc przypuszczam, że jemu właśnie chodzi o to jak wyznaczyć te kolizje, a to, co piszesz, jest raczej oczywiste ;p Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Exigo Opublikowano 9 Czerwca 2010 Autor Udostępnij Opublikowano 9 Czerwca 2010 Jak wyznaczyć kolizję - wiem. Ale jak ustalić gdzie do niej doszło (tzn. z której strony) - hm, no właśnie, jak. ;d Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
waxx Opublikowano 9 Czerwca 2010 Udostępnij Opublikowano 9 Czerwca 2010 Prędkość jest wektorem. To wiesz chyba z I klasy gimnazjum fizyki? Pozycja.X += Predkosc.X * deltaT; if(Kolizja) {Pozycja.X -= Predkosc.X * deltaT; Predkosc.X *= -1; } //cofnij i odwroc kolizja na osi x Pozycja.Y += Predkosc.Y * deltaT; if(Kolizja) {Pozycja.Y -= Predkosc.Y * deltaT; Predkosc.Y *= -1; } //cofnij i odwroc kolizja na osi y o boze stary nie zalamuj jak ruszasz sie poziomo, sprawdzasz kolizje -> kolizja na osi X jak ruszasz sie pionowo potem i po tym ruchu masz kolizje -> os Y Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Rekomendowane odpowiedzi
Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto
Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.
Zarejestruj nowe konto
Załóż nowe konto. To bardzo proste!
Zarejestruj sięZaloguj się
Posiadasz już konto? Zaloguj się poniżej.
Zaloguj się