Warsztat.GD

Programowanie => Szkółka => Wątek zaczęty przez: Bloodian w Marzec 07, 2012, 17:41:35

Tytuł: [C++][SDL] - Mały problem z implementacją ruchu postaci
Wiadomość wysłana przez: Bloodian w Marzec 07, 2012, 17:41:35
Witam,
piszę sobie małą gierkę w SDL. Napisałem szybki algorytmik kolizji, teraz próbuję zaimplementować ruch.
Mam jednak problem bo chcę żeby na moją postać działała grawitacja i żeby spadała z małą akceleracją.

Problem w tym że SDL_Rect w którym podaje się pozycję sprite`a (używam SDL_BlitSurface ) posiada pola INT przez co akceleracja sztucznie wygląda.

Próbowałem zrobić SDL_Delay(30-80) w pętli, ale wtedy nastepują krótkie zwiechy

Jak to obejść ?
Tytuł: Odp: [C++][SDL] - Mały problem z implementacją ruchu postaci
Wiadomość wysłana przez: Avaj w Marzec 07, 2012, 17:43:17
trzymaj współrzędne postaci jako floaty/double, a konwertuj na inty tylko przy rysowaniu
Tytuł: Odp: [C++][SDL] - Mały problem z implementacją ruchu postaci
Wiadomość wysłana przez: Bloodian w Marzec 07, 2012, 17:45:24
Tak robię, ale w ten sposób nienaturalnie to wygląda pownieważ z akceleracji +1 nagle przechodzi na +2 przez co powstaje przeskok.

Edit:
Ja to rozumiem że SDL_Rect siłą rzeczy musi posiadać zmienne typu int, bo pozycja jest liczona w pikselach.
Ale jak zrobić naturalną akcelerację w takim wypadku ?
Tytuł: Odp: [C++][SDL] - Mały problem z implementacją ruchu postaci
Wiadomość wysłana przez: Xirdus w Marzec 07, 2012, 17:59:53
Trzymaj pozycję postaci jako float, nie jako SDL_Rect. Ten ostatni możesz generować bezpośrednio przed rysowaniem.