Nobody Opublikowano 7 Czerwca 2008 Udostępnij Opublikowano 7 Czerwca 2008 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 Więcej opcji udostępniania...
Kofel Opublikowano 7 Czerwca 2008 Udostępnij Opublikowano 7 Czerwca 2008 A może zobacz czy poprostu przez jeden cykl piłka nie przeskakuje o więcej niż 1-2 piksele? To przez to pewnie. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Nobody Opublikowano 7 Czerwca 2008 Autor Udostępnij Opublikowano 7 Czerwca 2008 No tak, inaczej piłka leciałaby strasznie powoli. Dlatego chcę jakoś tak zrobić, żeby to wszystko szło trochę szybciej :P Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
adam014 Opublikowano 7 Czerwca 2008 Udostępnij Opublikowano 7 Czerwca 2008 Musisz napisać malutką fizykę piłki.Moge ci to zrobić ale niestety nie w C++ :(( Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Kofel Opublikowano 7 Czerwca 2008 Udostępnij Opublikowano 7 Czerwca 2008 @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 Więcej opcji udostępniania...
Konrad-GM Opublikowano 7 Czerwca 2008 Udostępnij Opublikowano 7 Czerwca 2008 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 Więcej opcji udostępniania...
kryniak Opublikowano 7 Czerwca 2008 Udostępnij Opublikowano 7 Czerwca 2008 Może spróbuj zmierzyć ile to ma FPSów, może to być źródłem problemu. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Nobody Opublikowano 7 Czerwca 2008 Autor Udostępnij Opublikowano 7 Czerwca 2008 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 Więcej opcji udostępniania...
Will Opublikowano 7 Czerwca 2008 Udostępnij Opublikowano 7 Czerwca 2008 omg... Pozycja+=(Speed*DeltaTime); Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Nobody Opublikowano 7 Czerwca 2008 Autor Udostępnij Opublikowano 7 Czerwca 2008 @UP: Przeczytałbyś może o co mi chodzi... Nie chcę, żeby piłka mi skakała a nie, żeby chodziła jednym tempem... Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Will Opublikowano 7 Czerwca 2008 Udostępnij Opublikowano 7 Czerwca 2008 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... Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Nobody Opublikowano 7 Czerwca 2008 Autor Udostępnij Opublikowano 7 Czerwca 2008 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 Więcej opcji udostępniania...
Will Opublikowano 7 Czerwca 2008 Udostępnij Opublikowano 7 Czerwca 2008 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? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
kubasz Opublikowano 28 Grudnia 2008 Udostępnij Opublikowano 28 Grudnia 2008 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 Więcej opcji udostępniania...
Pental Stary Opublikowano 28 Grudnia 2008 Udostępnij Opublikowano 28 Grudnia 2008 Gratulacje, ten kod ma sens... Wychodzi NA TO SAMO! Przeanalizuj go. Czy widzisz różnice między x += 3, a ++x; ++x; ++x? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Firemark Opublikowano 28 Grudnia 2008 Udostępnij Opublikowano 28 Grudnia 2008 Podstawowy problem - skopany timer. Sprawdzałeś ile masz fps i ile pozera cpu? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Konrad-GM Opublikowano 28 Grudnia 2008 Udostępnij Opublikowano 28 Grudnia 2008 100% CPU może pobierać zwykłe okno, a i tak FPS będzie wysoki :) Nie ma sensu sprawdzać zużycie CPU, lepszy sposób to FPSy ;p Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Dawidds Opublikowano 31 Grudnia 2008 Udostępnij Opublikowano 31 Grudnia 2008 A czy wiecie, że dyskutujecie o temacie sprzed 6 miesięcy ;( ? 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ę