Strona 1 z 1
SDL fizyka(odbicie)
: 04 sty 2010, 21:48
autor: Mateusz_93
Witam! Na początek chcę powiedzieć, że ogólnie to mam to zrobione, tylko chcę to poprawić. Jak zapewne wiecie w każdej klatce dodaje się do prędkości pionowej stałą grawitacji, żeby "przedmioty" mogły spadać. Odbicie zrobiłem w ten sposób, że gdy wykrywam kolizję zamieniam znaki prędkości pionowej(może trochę niezrozumiałe, już kod:p).
Mój problem polega na tym, że do czasu, kiedy przedmiot spadnie na sam dół "yVel" zdąży wzrosnąć tak, że wygląda to tak, jakby piłka odbijała się od powietrza 2cm nad podłożem. Chciałbym, żeby odbijała się od podłoża i nie wiem jak to zrobić, bo próbowałem kilku pomysłów, ale wszystkie zawiodły:(. Proszę o pomoc i z góry dziękuję!
Odp: SDL fizyka(odbicie)
: 05 sty 2010, 23:06
autor: 3miel
Mateusz_93 pisze:bo próbowałem kilku pomysłów, ale wszystkie zawiodły
napisz czego próbowałeś bo zaraz wyjdzie że każda pomoc na która ktoś wpadnie była sprawdzona i nieefektywna, ja bym dodał lub odjął promień piłki, ale to chyba w warunku na kolizje.
Odp: SDL fizyka(odbicie)
: 06 sty 2010, 14:18
autor: mikolajs
Poza tym co napisał 3miel, pewnie musisz zsynchronizować wyświetlanie tak, aby była rysowana klatka w momencie odbicia od podłoża (czyli wyświetlać przedmiot na dole w pozycji styku z ziemią po wykryciu kolizji)
Odp: SDL fizyka(odbicie)
: 06 sty 2010, 21:01
autor: Mateusz_93
Próbowałem dodać do współrzędnej odległość, jaka została między podłożem a piłką.
Kod: Zaznacz cały
if((y<0) || (y+h>600))
{
y-=yVel;
//tutaj:
y+=(600-(Position.y+Position.h));
yVel=-yVel;
}
Position to SDL_Rect zawierający współrzędne piłki. Jednak po zastosowaniu tego piłka raz się odbija(od samego podłoża:)), ale zbyt wysoko i nagle pojawia się nisko i zyskuje na wysokości przy każdym następnym podskoku i znowu dociera do samej góry i pojawia się na dole. "Różne sposoby" polegały na zmianie tej linijki kodu.Np dodawanie innych wartości, zamiana + na - albo zamiana y na yVel. Może trochę nieczytelnie piszę, ale trudno to wytłumaczyć pisząc:/
Ps. y nigdy nie jest mniejsze od 0 w moim programie, a 600 to wysokość okna.
@mikolajs- racja, ale możliwe, że piłka nigdy nie styka się bezpośrednio z podłożem, bo prędkość tak wzrośnie, że piłka będzie "wchodzić" w podłoże. W moim programie odejmuję wtedy od położenia prędkość(y-=yVel).