Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

SFML - poruszanie się postacią.

Ostatnio zmodyfikowano 2015-07-16 20:41
Autor Wiadomość
Patrycjerz
» 2015-07-16 19:15:22
Trzeba pamiętać, że czas jednego obiegu pętli (czas jednej klatki gry) jest zależny od szybkości podzespołów komputera. Uzależnienie ruchu od czasu umożliwi ci uniknięcie problemów z różnym działaniem tej samej gry na różnym sprzęcie.

Tutaj masz link do strony, która tłumaczy główną pętle gry: http:/​/notatkiprogramisty.blox.pl​/2014/04​/Programowanie-Gier-glowna-petla-gry-ang-game-loop.html.

Pamiętaj, że ruch obliczasz ze znanego wzoru s=v*t.
P-134777
executor1909
Temat założony przez niniejszego użytkownika
» 2015-07-16 19:28:28
Wielkie dzięki! Bardzo mi się przyda, potrzebuje trochę poradników, bo jestem mocno początkujący :D
P-134778
bingo009
» 2015-07-16 19:34:02
P-134779
Patrycjerz
» 2015-07-16 19:36:21
Bingo, czytasz mi w myślach :D Ja też miałem zapodać tę stronę, ale pomyślałem, że tamta jest lepsza (więcej informacji).
P-134780
bingo009
» 2015-07-16 19:37:25
Dla początkującego w sam raz. Pisany bardzo prostym językiem, ładnie objaśniony dlaczego tak, a nie inaczej :D
P-134781
executor1909
Temat założony przez niniejszego użytkownika
» 2015-07-16 20:02:07
Jeszcze raz dziękuję wszystkim za pomoc! Jutro wyjeżdżam na 10 dni, jak będę miał wolny czas to poczytam o tej pętli czasu rzeczywistego. Tymczasem wątek zamykam, w razie problemów stworzę nowe :)
P-134786
Patrycjerz
» 2015-07-16 20:41:37
Klasa sf::Clock umożliwia zwrócenie czasu za pomocą metody getElapsedTime. Taki czas (obiekt sf::Time) trzeba przerobić na normalne liczby. W tym celu stosuje się metody zależne od sytuacji: asSeconds, asMilliseconds i asMicroseconds. Podam ci podsumowujący przykład:

C/C++
//...
sf::Clock zegar;
sf::Time czas;

float sekundy;
sf::Int32 milisekundy;
sf::Int64 mikrosekundy;

czas = zegar.getElapsedTime(); //ta metoda zwraca obiekt sf::Time

//no i transformacja na wartości liczbowe
sekundy = czas.asSeconds();
milisekundy = czas.asMilliseconds();
mikrosekundy = czas.asMicroseconds();

Ważne jest to, że czas liczony przez sf::Clock ma swój początek od stworzenia tego obiektu albo od restartu zegara metodą restart.

Oczywiście najlepiej przeczytać dokumentacje tych dwóch obiektów: http://www.sfml-dev.org​/documentation/2.3.1​/classsf_1_1Clock.php, http://www.sfml-dev.org​/documentation/2.3.1​/classsf_1_1Time.php.
P-134793
1 « 2 »
Poprzednia strona Strona 2 z 2