Autor Wątek: SDL_Delay() w XNA  (Przeczytany 2821 razy)

Offline dynax

  • Użytkownik

# Maj 09, 2008, 19:58:17
Witam, otóż piszę sobie gre o boksie (walczymy z komputerem na ringu). Niestety cios jest zadawany w ułamku sekundy i nawet nie widać zmiany klatki  :-\ . Przydała by mi się jakaś funkcja która wprowadziła by opóżnienie przy zadawaniu ciosu. Już ponad tydzień szukam w dokumentacji takiej funkcji. Niestety bezskutecznie. Normalnie użyłbym SDL_Delay() ale piszę tą gre w XNA. Ktoś może zna taką funkcje? Byłbym bardzo wdzięczny.

Offline Mr. Spam

  • Miłośnik przetworów mięsnych

Offline skoti

  • Użytkownik

# Maj 09, 2008, 20:04:56
Witam, otóż piszę sobie gre o boksie (walczymy z komputerem na ringu). Niestety cios jest zadawany w ułamku sekundy i nawet nie widać zmiany klatki  :-\ . Przydała by mi się jakaś funkcja która wprowadziła by opóżnienie przy zadawaniu ciosu. Już ponad tydzień szukam w dokumentacji takiej funkcji. Niestety bezskutecznie. Normalnie użyłbym SDL_Delay() ale piszę tą gre w XNA. Ktoś może zna taką funkcje? Byłbym bardzo wdzięczny.
Na 100% jest możliwość pobrania czasu w milisekundach... więc możesz zrobić

long czas = time();
while(czas+na_ile_ms_przerwac < time());
« Ostatnia zmiana: Maj 09, 2008, 20:10:39 wysłana przez skoti »

Offline Kurak

  • Użytkownik

# Maj 09, 2008, 20:05:25
System.Threading.Thread.Sleep?

Offline SirMike

  • Użytkownik
    • SirMike's Techblog

# Maj 09, 2008, 21:10:46
Nie zwalczajcie skutkow zlego zachowania programu tylko przyczyny.
Jesli cios zadawany jest w ulamku sekundy to masz skopane algorytmy animacji. Gdy zastosujesz SDL_Delay to na wolniejszym komputerze moze to dzialac zybt wolno.
Uzaleznij animacje od czasu - jak to zrobic znajdziesz na naszym wiki.

http://wiki.warsztat.gd/Warsztat_FAQ#Co_zrobi.C4.87.2C_.C5.BCeby_gra_dzia.C5.82a.C5.82a_w_sta.C5.82ym_tempie.3F

Offline dynax

  • Użytkownik

# Maj 10, 2008, 10:11:41
System.Threading.Thread.Sleep?

Teraz gra jakoś niestabilnie się zachowuje.

Nie zwalczajcie skutkow zlego zachowania programu tylko przyczyny.
Jesli cios zadawany jest w ulamku sekundy to masz skopane algorytmy animacji. Gdy zastosujesz SDL_Delay to na wolniejszym komputerze moze to dzialac zybt wolno.
Uzaleznij animacje od czasu - jak to zrobic znajdziesz na naszym wiki.

http://wiki.warsztat.gd/Warsztat_FAQ#Co_zrobi.C4.87.2C_.C5.BCeby_gra_dzia.C5.82a.C5.82a_w_sta.C5.82ym_tempie.3F

Pomyślę nad tym algorytmem. Na razie - karma++

Offline Frondeus

  • Użytkownik

# Sierpień 10, 2008, 17:32:03
To ja się dopisze do tego tematu :)
Mam pytanie, jak użyć Xna'owego GameTime do  np. Dodania po 100 złota do skarbca w strategii co 1 sekundę?
« Ostatnia zmiana: Sierpień 10, 2008, 17:35:02 wysłana przez Frondeus »

poopa

  • Gość
# Sierpień 10, 2008, 18:04:47
Na dziś dzień wystarczy że użyjesz byle jakiego zegara i będziesz sprawdzał możliwie często czy już minęło 18 ms. jeżeli tak, to Update gry i jej Render.

Żadne sleep-y...


Frondeus: Liczysz ile milisekund minęło i mnożysz przez ilość złota... - w tym wypadku przez 0.1f. Całość dodajesz do już posiadanej sumy złota.