Skocz do zawartości

[SDL] Płynne działanie gry


Rekomendowane odpowiedzi

Opublikowano

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 :)

Opublikowano

@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".

Opublikowano

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 :)

Opublikowano
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.

Opublikowano

A jak myslisz co jest przyczyną skakania.. --.--

P.S Temat: Płynne działanie gry -> Ty: "Nie chcę, żeby piłka mi skakała a nie, żeby chodziła jednym tempem..." zastanawiające...

Opublikowano

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.

Opublikowano

Podwójnie buforowanie włączone? interpolować? dodawać po pikselu co określony czas bez względu na fps? Operowanie na liczbach zmiennoprzecinkowych, oparte na podanym wcześniej wzorze , następnie konwersja do integer?

  • 6 miesięcy temu...
Opublikowano

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

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ę...