Skocz do zawartości

[SDL] Płynne działanie gry


Nobody

Rekomendowane odpowiedzi

Siemka :) Robię Arkanoida w C++ działając z biblioteką SDL. Prawdopodobnie robię to niewydajnie, ale na razie to jedyny znany mi sposób. Zrobiłem sobie funkcję lengthdix i lengthdiry, a piłka ma ustaloną prędkość i kierunek. Niestety piłka leci zbyt wolno, a gdy dam jej za dużą prędkość "skacze". Tu pojawia się moje pytanie. Czy da się jakoś "upłynnić" tą piłkę? Jeżeli będzie potrzeba trochę kodu pisać, wkleję go tu.

 

Pozdrawiam i z góry dziękuję za pomoc :)

Odnośnik do komentarza
Udostępnij na innych stronach

@adam

A co fizyka ma do tematu? Nie spamuj, ok?

 

@nobody

To już raczej zależy ile będziesz miał cykli na sekundę, nie wiem jak to rozwiązać, ale raczej na cykl piłka nie może więcej się przemieszczać niż 1-2 piksele bo będzie skakać chyba że jakiś sposób na rysowanie piłki żeby była "płynna".

Odnośnik do komentarza
Udostępnij na innych stronach

SDL obsługuje współrzędne X,Y jako "int" musisz stworzyć klasę piłce która będzie przechowywała dane o piłce takie jak pozycja jako float'y, funkcja do ruchu i rysowania, przy rysowaniu zamieniaj float'y na int'y, powinno przy ok 1.3/0.2px szybkości piłki działać poprawnie :)

Odnośnik do komentarza
Udostępnij na innych stronach

musisz stworzyć klasę piłce która będzie przechowywała dane o piłce takie jak pozycja jako float'y, funkcja do ruchu i rysowania, przy rysowaniu zamieniaj float'y na int'y

Wszystko to zrobiłem :P

SDL obsługuje współrzędne X,Y jako "int"

Tj. już są tu wbudowane zmienne X i Y? Ja zrobiłem osobne jako float.

Odnośnik do komentarza
Udostępnij na innych stronach

Skakanie nie w stylu, że raz wolniej raz szybciej, tylko piłka zamiast lecieć to się tak jakby 'teleportuje' z miejsca na miejsce... Wiem co jest tego przyczyną (zbyt duże wartości dodawane do pozycji), ale nie wiem jak to poprawić, żeby piłka leciała tą samą prędkością, z tym że płynnie.

Odnośnik do komentarza
Udostępnij na innych stronach

  • 6 miesięcy temu...

Ja odrazu daje kod, pozmieniaj tylko nazwy obiektów :P

int velx,vely; // prędkość pilki (velx = ile pikseli na jedna klatka w osi X, vel y tak samo tylko oś Y
// Poniżej: to co ma sie wykonywać co klatkę
for(int ix = 0;ix<velx;ix++) // Pętla for
{
PILKA.X += 1
}
for(int iy = 0;iy<vely;iy++) // Pętla for
{
PILKA.Y += 1
}
// Tutaj rysuj pilke :P

Odnośnik do komentarza
Udostępnij na innych stronach

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ę
  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...