Jak opóźnić przycisk?

0

Siemka, mam takie pytanko jak opóźnić przycisk, szukałem w googlach, bo mnie odbanowali, ale nie znalazlem.
Chodzi mi o to, że pod przyciskiem np. spacja mam funkcje która mi się wywoluje w wątku i ja ją opozniam przez Thread.sleep(); ale jest problem bo jak przytrzymam spacje to nabije mi tych przyciśnięć strasznie dużo a tego nie chce. Wtedy program się zawiesza, to znaczy wykonuje sie caly czas ta funkcja w odstepach czasu az sie nie skonczy liczba razów wcisnietego przycisku spacja. Ktoś wie jak pomóc?

0

Może odpalenie tej funkcji czy tam wątku daj dopiero po puszczeniu spacji. Dokonaj analizy ze wciśnieta spacja ale metode odpalaj gdy klawisz jest zluzowany

0

No wlasnie nie, to jest tak jak grasz w gre, strzelasz jak nacisniesz spacje a nie jak puscisz....

0

no ale to trzymając to operacja ma się powtarzać? Czy ma się nie powtarzać?
Zawsze możesz flagę jakąś ustawić aby tylko jedno wciśnięcie brał

0

Nie wiem czy o dokładnie o to Ci chodzi, ale kiedyś sobie napisałem paranoicznie dokładną obsługę klawiatury, która w wersji dla jednego klawisza wygląda mniej więcej tak:

	//JButton przycisk - Twój przycisk do "opóźniania"
	//innaKontrolka - jakaś kontrolka z focusem na klawisze
//...
	private boolean pressed = false;
//...
	innaKontrolka.addKeyListener(new KeyAdapter()
	{
		@Override public void keyPressed(KeyEvent e)
		{
			if(e.getKeyCode() == KeyEvent.VK_SPACE && !pressed)
			{
				spacePressed = true;
				wciśnij(przycisk);
			}
		}
		@Override public void keyReleased(KeyEvent e)
		{
			if(e.getKeyCode() == KeyEvent.VK_SPACE && pressed)
			{
				spacePressed = false;
				puść(przycisk);
			}
		}
	});
//...

	/**
	 * Wizualnie wciska przycisk i wyzwala zdarzenie jego przyciśnięcia
	 * @param przycisk przycisk do wciśnięcia
	 */
	public static void wciśnij(JButton przycisk)
	{
		ButtonModel m = przycisk.getModel();
		m.setArmed(true);
		m.setPressed(true);
		przycisk.paintImmediately(0, 0,
			przycisk.getWidth(), przycisk.getHeight());
	}

	/**
	 * Wizualnie puszcza przycisk i wyzwala zdarzenie jego puszczenia
	 * @param przycisk
	 */
	public static void puść(JButton przycisk)
	{
		ButtonModel m = przycisk.getModel();
		m.setPressed(false);
		m.setArmed(false);
		przycisk.paintImmediately(0, 0,
			przycisk.getWidth(), przycisk.getHeight());
	}
0

tutaj masz moj fragment kodu:
case KeyEvent.VK_SPACE :
if(spaceDown){
try{
fire();
Thread.sleep(300);
}
catch ( InterruptedException b) {
System.out.println("Strzał zbyt wcześnie");
}
spaceDown = false;

            }
            break;

chce aby funkcja fire byla opozniana, strzelam w grze z broni, w sensie strzelam z broni i nie moge strzelac ciagiem pociskow jeden za drugim co milimetr, taki spam.... tylko chce zeby bylo opoznienie, ze nie mozna strzelac czesciej niz 300 ms i teraz wstawilem flage jak widac, keyReleased daje flage na true i mamy polowe sukcesu, bo jak sie trzyma to wykonuje sie juz tylko raz ta funkcja, ale teraz znow mozna "nawalać" w spację i będzie podobny efekt do tego, gdy trzymalem spacje, znow program zapamieta jakies 1000 przycisniec i bedzie odpalal je co 300 milisekund. Rozumiecie o czym mówie i w czym problem?

0

Zrób sobie zmienną która przechowywać będzie odstęp czasowy pomiędzy kolejnymi wystrzeleniami.
W grze na pewno masz zaimplementowany upływający czas od ostatniej pętli.

Kiedy strzelisz zmienną ustawiasz na np. te 300; int shootTime = 300;
W każdym przebiegu pętli gry odejmujesz od tych 300 czas który upłynął shootTime-=elapsedTime;
Kiedy strzelasz ponownie sprawdzasz czy ta zmienna jest mniejsza równa 0.
if(shoot Time <=0){
strzelaj();
shootTime = 300; // z powrotem będziemy odliczać
}

0

nie rozumiecie albo ja was, chodzi o to, że program java nalicza mnostwo przycisniec spacji, które mialy za zadanie wykonac funkcje w odstepie czasowym i mimo ze ty juz pol godziny temu przestales naciskac spacje, to on jeszcze pamieta i strzela.

To jest gra napisana przeze mnie ;d, nie mam czegos takiego jak czas ktory uplynal od ostatniej petli, nie wiem w ogóle co to jest. Uczę się pisać gry i jestem początkujący :)
Chcę się bawić tak aby nie używac bibliotek zewnetrznych, czyli gotowych rozwiazan i wszystko stworzyc od zera po swojemu.

Wyobraź sobie, ze grasz w gre, jestes zolnierzem strzelasz spacją. Napierdzielasz w spacje ile wlezie, bo chcesz zabić wroga, wróg w koncu został zabity, ale program dalej strzela, bo nabiłeś mu 10000000 spacji i będzie wykonywać te 10000000 funkcji w odstepie 300ms :D czyli do jutra sie nie skonczy :D Rozumiecie :)? Mam nadzieje, że wyjaśnilem problem.

Inną ciekawą rzeczą z tym także związaną jest np. to, że chce stworzyć wyskakujący tekst np. "Zdobyłeś dodatkową amunicję" i tekst się pojawia na ekranie rośnie i znika. Czyli wydaje mi się, że czcionka powinna rosnąć, ale teraz jak to zrobić, zeby to było dla oka zauważalne ;d, jakieś opóźnienia pewnie. Ale trzeba to zrobić tak, aby gry nie zacinać i nie zawieszać.

Proszę pomóżcie albo jak znacie jakies fajne linki czy coś, ale nie chce zewnetrznych gotowych bibliotek ;d, ewentualnie możecie podrzucić ciekawe rozwiązanie stamtąd.

0

Nie potrzeba żadnych dodatkowych bibliotek, tylko standardowe Javy. Sleep nie może być używany do takich zastosowań bo on na ten czas po prostu Ci zamrozi cały proces i robi się kolejka eventów, które nie zostały obsłużone bo był sleep i dlatego nabija ci tyle naciśnięć które dopiero po sleepie mogą być obsłużone, ale z taką ilością obsluga nie nadąża.

Zrób jak napisałem wyżej.

System.currentTimeMillis() - podaje ci aktualny czas w milisekndach.

Jeśli nie użyjesz sleepa to te 100 wywołań spacji zostanie od razu obsłużone a nie z opóźnieniem, a w obsłudze naciśięcia spacji sprawdzasz czy te 300milisekund już mineło, jeśli nie to czekasz dalej, jak już 300 milisekund mineło to strzelasz.

0
jednak do końca nie łapie, dam ci kod:
public void keyPressed(KeyEvent e) {
        switch (e.getKeyCode()) {
            case KeyEvent.VK_B :
                startTime=System.currentTimeMillis();
                while((System.currentTimeMillis()-startTime)<=delayTimeBomb)
                    if((System.currentTimeMillis()-startTime)>=delayTimeBomb)
                        fireCluster();
                break;
}
}

taki fragment tego kodu, ja to robie źle, mógłbyś to napisać jak użyc tego poprawnie?
Przyklad do przycisku B, na "bomby"

1

W żadnym wypadku nie możesz robić ani sleepa, ani poolingu w obsłudze zdarzeń. Z każdej obsługi zdarzeń musisz wychodzić tak szybko jak to jest możliwe. Obsługa ta ma za zadanie ustawić nowy stan aplikacji i wynocha.
To dlatego Twoja obsługa jest źle zrobiona.
Poprawna obsługa klawiszy dla gry działa tak, że dla każdego klawisza, którego chcesz obsługiwać musisz trzymać sobie jego aktualny stan. W przypadku klawisza dyskretnego (cyfrowego) sa to tylko dwa stany - wciśnięty i puszczony. Można więc ten stan trzymać w jednej zmiennej boolean, albo wręcz w jednym bicie mapy bitowej (np. BitSet), albo w EnumSet gdzie elementami wyliczenia będą kolejne obsługiwane VK_cośTam (ten numer nie przejdzie na tabliczkach czy klawiaturze muzycznej, które mają wiele stanów "naciśnięcia").
Twój program powinien regularnie sprawdzać stan obsługiwanych klawiszy w pętli aktualizacyjnej. A ta która powinna być synchronizowana wg upływu czasu (żeby szybkość komputera nie miała znaczenia) i na tej podstawie decydować co dalej. Na przykład jedno naciśnięcie spacji powinno załapać się na przynajmniej jedną aktualizację stanu, więc dostaniesz informację "spacja wciśnięta" - wtedy robisz sobie jakiś strzał czy coś. Przy kolejnych aktualizacjach sprawdzasz czy spacja jest nadal wciśnięta przez jakiś czas (ustalonego przez Ciebie zwalniania przycisku lub wyzwolenia autofire). Dopóki ten czas nie minie, wszelkie kolejne zdarzenia naciśnięcia spacji olewasz - możesz zareagować tylko na zwolnienie spacji, co pozwoli Ci przełączyć stan spacji na zwolniony. To właśnie zabezpiecza przed masowym spamowaniem spacją - czyli masz zdefiniowaną największą częstotliwość "strzelania" pojedynczymi strzałami. Gdy ktoś będzie próbować naciskać częściej, to nic to mu nie da. Jeżeli jednak spacja będzie wciąż naciśnięta, ten czas minie, to już wiesz, że Twoja aplikacja powinna sobie wygenerować autofire, który też będzie zależny czasowo, a więc strzał będzie wyzwalany dokładnie co ten sam odstęp czasu - znów po to aby na szybszym komputerze ilość strzałów nie była większa, a na wolniejszym mniejsza. Puszczenie spacji przełączy Ci flagę klawisza i przy najbliższej aktualizacji likwidujesz wszelkie liczniki - ten który odczekuje do wyzwolenia autofire/skończenia strzału oraz ten, który mając już autofire odlicza do kolejnego strzału.
Najlepsze jest ustalenie czasu zwalniania spacji na taki sam okres jak czas między kolejnymi strzałami z autofire - dzięki temu nie będzie dziwnego wrażenia jakby ktoś strzelał za gracza (za długo w stosunku do przerwy autofire) lub jakby broń była nad-aktywna (za krótko w stosunku do przerwy autofire).
To mniej więcej to co napisał Ci @shusty. Krótko mówiąc naciśnięcie spacji nie będzie dla Ciebie wejściem, lecz będą nimi flaga naciśnięcia spacji oraz liczniki do skończenia strzału/rozpoczęcia autofire oraz strzelania z autofire.
Pamiętaj, że GUI i obsługa zdarzeń są asynchroniczne, a gra (czy coś co ma tak reagować na klawisze jak opisałeś) musi działać synchronicznie. Kolejne aktualizacje stanu gry mogą być zarówno zrobione pętlą synchronizowaną czasowo(trudniej), albo po prostu jakimś timerem. Trzeba tylko pamiętać, że jeżeli w pierwszym wypadku przekroczysz czas ramki przeznaczonej na aktualizację gry, to masz jakieś pole manewru (przesunięcie ramki, eliminacja czasochłonnych renderingów itp.), a w drugim, zdarzenie timera może się nie wywołać i przepaść w całości lub (jeżeli tak zostanie zaprogramowane) wywołać w kolejnym wątku zanim zakończy się poprzednie (to zwykle oznacza katastrofę bo pożyczek czasu nie ma jak "zwrócić", a na dodatek każdy kolejny wątek spowolni już działające).

0
Olamagato napisał(a):

Pamiętaj, że GUI i obsługa zdarzeń są asynchroniczne, a gra (czy coś co ma tak reagować na klawisze jak opisałeś) musi działać synchronicznie. Kolejne aktualizacje stanu gry mogą być zarówno zrobione pętlą synchronizowaną czasowo(trudniej), albo po prostu jakimś timerem. Trzeba tylko pamiętać, że jeżeli w pierwszym wypadku przekroczysz czas ramki przeznaczonej na aktualizację gry, to masz jakieś pole manewru (przesunięcie ramki, eliminacja czasochłonnych renderingów itp.), a w drugim, zdarzenie timera może się nie wywołać i przepaść w całości lub (jeżeli tak zostanie zaprogramowane) wywołać w kolejnym wątku zanim zakończy się poprzednie (to zwykle oznacza katastrofę bo pożyczek czasu nie ma jak "zwrócić", a na dodatek każdy kolejny wątek spowolni już działające).

Zainteresuj się gogeta006 takim tematem jak pętla gry stałokrokowa. Łatwo znaleźć wyjaśnienie w necie o co chodzi.

0

Dzięki chlopaki za pomoc oraz za te czasochłonną wypowiedź, dzięki niej wiele zrozumiałem na temat ogólny, czyli żeby przyciski wywoływały nie funkcji a flagi(stany). Spoko rozumiem, ale mam jeszcze jeden problem, jak zrobic te liczniki o których mowa, szukam na niecie, ale nie widze.

Jakbyście zapodali jakieś kawałki przykładowego kodu byłbym wdzięczny ;)

A co do pętli stałokrokowej, czytałem o tym i chodzi o stałe odświeżanie "świata, logiki gry" ok w porządku, ale to jest tak jakby już ogólne dopracowanie, żeby wszystko ładnie równo śmigało, bardzo ciekawe, na pewno użyje, ale troszkę odbiegające od mojego pytania ;)

0

Najprostszy licznik:

//kawałek kodu odpalany jeden raz
long SPRAWDZANY_OKRES = 20 * 1_000_000L; //20 ms przeliczone na ns
long start = System.nanoTime(), end = start, czasKtóryUpłynął = end - start; //początkowo 0
//...
//w kodzie aktualizacyjnym stanu (regularnie wywoływanym - może być
//wywołanie zegarowe z jakiegoś Timera, albo pętla z opóźnieniem sleep w osobnym wątku)
end = System.nanoTime();
czasKtóryUpłynął = end - start; //czas rzeczywisty, który już upłynął
if(czasKtóryUpłynął >= SPRAWDZANY_OKRES)
{
	start = end; //rozpoczęcie liczenia kolejnego okresu
	//tu coś robisz gdy licznik został przekroczony
	//...
}
else
{
	//tu coś robisz gdy licznik nie został przekroczony
	//...
}
//...

Takich if z warunkiem dla różnych wielkości okresu może być kilka zależnie od potrzeb, o ile liczniki nie będą równoczesne. Gdyby była potrzeba równoczesnych liczników, to musisz również zwielokrotnić zmienne lub zapakować wszystkie zmienne liczników do krótkiej tablicy. Oczywiście takie zmienne jak czasKtóryUpłynął są tu tylko po to, żebyś załapał o co chodzi. Normalnie można ją wywalić i używać po prostu end - start.

ps. Zauważ, że w warunku if w idealnych warunkach (czasKtóryUpłynął == SPRAWDZANY_OKRES) powinno dawać true. Jednak w praktyce to się nigdy nie zdarza, a latency = czasKtóryUpłynął - SPRAWDZANY_OKRES jest miarą spóźnienia się kodu w stosunku do stałych odcinków czasu zegarowego.
Gdyby aktualizacja gry była wykonana w osobnym wątku w pętli ze wstawionym sleep, to od określonej stałej wartości sleep należy odjąć to latency, aby w ten sposób sterować jej "obrotami". Wtedy obroty pętli będą stabilizowane przez elastyczne opóźnienie w sleep. I tak właśnie dochodzimy do najprostszej pętli stałokrokowej, w której kolejne wykonania obrotów pętli będą następowały w stałych punktach odcinków czasu (np. co 1/60 sekundy).
Trzeba tylko pamiętać, że inny licznik będzie potrzebny dla stabilizowania pętli aktualizacji (co częściowo dotyczy też renderowania), a inny do liczenia stanów kontrolerów gry (tutaj klawiatury). Przy średnio rozbudowanej grze takich liczników może być kilkanaście.

0

Ciekawi mnie tylko skąd ty to wszystko wiesz :D. Jak macie jakies fajne linki artykuły odnośnie właśnie pisania gier to podeślijcie ;). Ja caly czas szukam pod różnymi hasłami a zaczynałem od pdf na necie "invaders.pdf" "jak napisac gre w javie" znacie ;P?

Chodzi o to, że chciałbym napisać grę RPG :) a potem zrobić z niej mmorpg, ale nie wiem jak zacząć i takich poradników nie znalazłem, nawet jęśli takich nie ma, to mogą być także książki, najwyżej trochę kasy poświęce ;)

0

Oni to wszystko wiedzą z głowy, mnie też zaskakują.

A ja ci proponuję takie cudeńko za (niestety) 120 zł: http://helion.pl/ksiazki/java-tworzenie-gier-david-brackeen-bret-barker-laurence-vanhelsuwe,javtwg.htm

0

Nie z głowy tylko z literatury i zabaw z programowaniem.

Co do tej książki nie polecam jej, kolega ją ma, ale dał sobie z nią spokój i w necie materiałów fajniejszych szukał. Pożyczyłem ją i stwierdziłem, że niby podstaw sięga, ale jakąś dziwną jedyną słuszną metodą jeszcze wykorzystując przestarzałe rozwiązania. Za 20zł na allegro kupić + 10zł przesyłka się opłaca, ale 60 nawet bym za nią nie dał.
W necie jest sporo tutoriali np. do C++, ale nawet jak C++ nie znasz to tylko czytasz tekst, gdzie tłumaczą co, gdzie i dlaczego. Na tej podstawie kumasz o co chodzi i piszesz swój kod.

Jeśli zna się dosyć dobrze podstawy Javy to z rozszyfrowaniem kawałków kodu C++ tylko obrazujących objaśnienie nie powinien mieć nikt problemów. Co do pętli gry. Masz np. tutaj fajny wpis na blogu, z którego ja sporo zaczerpnąłem na początku: http://xion.org.pl/productions/texts/coding/game-programming/real-time-loop/

Tak naprawdę wystarczy że tutorial pokazuje grę w innym języku, ale tłumaczy o co chodzi. Jeśli znasz javę to tutaj np. tylko inaczej niż w C# się przechwytuje i odczytuje zdarzenia, ale to kwestia nauki języka, a grę się robi tak samo.

0

Tak jak napisał @shusty. Wszystko to teoria z literatury sprawdzona w praktyce. Jeżeli chodzi o pętlę gry, to proste źródła z użyciem liczb zmiennoprzecinkowych są dostępne w necie. Pętle stałoprzecinkowe (komórki, smartfony) ze stabilizacją ramek czasu i uwzględniające specyfikę obsługi różnych topologii sieci (co jest potrzebne do MMO) są już prawie niedostępne bo wielu ludzi z tego wciąż żyje. Najnowsze wersje używają nowszych możliwości Javy i intensywnego zarządzania wątkami gry - nie sądzę, żeby ktoś taki gotowiec opublikował w najbliższej przyszłości.
Na szczęście matematyki i fizyki nie da się opatentować. Można niezależnie dochodzić do takich samych rozwiązań. Wystarczy trochę pomyśleć.
...Albo kupić gotowy engine lub skorzystać z już istniejących (lecz bez źródeł), nierzadko darmowych (lub za prowizję 20% zysków jak w przypadku silnika Cryteka).

0

A jeżeli opierasz sie na JMonkeyEngine? albo na http://www.13thmonkey.org/~boris/jgame/. To czy możesz zbudować na tym grę i zarabiać na niej z wykorzystaniem tych blibliotek? Nie ma problemu z wkorzystywaniem tego?

Co do C++ znam go dobrze, tak samo JAVE, C# troche.

Umiem języki, ale umiem bardzo mało tricków.

0

Mam jeszcze, jedno pytanie, nie chce robić nowego tematu. Jak zrobić ten efekt "obrażeń" mam namyśli te liczby wyskakujące i rosnące. Wg mnie to musi byc jakas pętla która po prostu zwiększa czcionkę, jednak to robi się tak szybko, że dla oka jest niezauważalne, więc co, do tego też trzeba licznik?

Czy może jest (a raczej na pewno) jakiś inny trick, w necie nie znalazłem ktoś pomoże? Jak zrobić ten trick z dmg?

A i btw co to "tłumaczenie symultaniczne z markerem głosu" google jakoś nie tego nie kojarzy ;d?

0

Takie rzeczy dobrze rozwiązywać po swojemu. Nauczysz się przy tym programować (a nie poznawać język), chociaż prawdą jest, że rozwiązań czegoś takiego może być tyle ilu jest programistów i niektóre będą bardziej eleganckie niż twoje, ale co z tego ;) Najwyżej później gdzieś przypadkiem doczytasz o lepszym sposobie i swój kod przerobisz.

W grach trzeba dbać o najmniejszą pierdołę, zresztą jak wszędzie, ale tych pierdół w grach jest multum. Dodajesz, że skok będzie miał inną animację i nawet nie wyobrażasz sobie w ilu miejscach trzeba pomyśleć i dobrze kod zmienić, by wszystko działało jak należy. Same kolizje to już niezła zabawa. Teoretycznie nie powinna to być przeszkoda, ale całym polskim internecie nie ma dobrze wytłumaczone z objaśnionym kodem (obojętnie jaki język) najpopularniejszych i dobrych kolizji SAT oraz GJK. Kolizja box-box szybko Ci nie wystarczy, a i tak trzeba wiedzieć dokładnie zazwyczaj z której strony nastąpiła kolizja.

Do do efektu obrażeń, nie wygląda to na skomplikowaną rzecz. Przez jakiś czas zapamiętujemy obrażenia dla danego obiektu, jeśli znów otrzymał obrażenia to ten zegar zerujemy i dodajemy obrażenia. Jeśli ten czas pamiętania obrażeń minął to napisy znikają. A uzależnienie wielkości czcionki i koloru od wartości liczbowej jest bardzo proste.

0

Ale widzisz znów tłumaczysz mi bardzo ogólnie, na przykładzie już dużej gry ;d, ale ja mam swoją malutką i chce ten efekt dodać i w jaki sposób mam uzaleznic te wielkośc czcionki i koloru od obrazen?? Jak zrobić żeby sie pojawialy i rosly. Np.Diablo 3.

0

Nie podałem rozwiązania dla dużej gry. Dobrze przeanalizuj co napisałem wyżej, a co do samego rozmiaru i kolorów to przecież wystarczy zrobić ifami przedziały punktowe i jak się złapie wartość w jakiegoś ifa to tam odpowiedniego fonta ustawisz.

0

Najpierw musisz nauczyć się robić najprostsze animacje dlatego, że to też jest animacja. Najprostsze polegają na przesuwaniu czegoś z miejsca na miejsce, te trochę bardziej zaawansowane dokładają do tego przekształcenia takie jak obrót i na koniec zmianę wielkości. To po prostu geometria w praktyce.
Uzależnienie wielkości i koloru jest banalne - porównujesz dmg i ilośc hp jako procent obrażeń, czyli poziom zagrożenia. Im większy procent, tym większa czcionka lub kolor idący z np. z białego przez żółty w czerwony. Do zmiany wielkości potrzebna jest tylko odpowiednio przeskalowana liczba - a więc poziom zagrożenia. Dla koloru musisz przynajmniej umieć wcześniej umieć zrobić jakiś gradient między np. żółtym, a czerwonym i na podstawie zagrożenia wybrać kolor, w przypadku 3 kolorów będą dwa kolejne gradienty (biały-żółty i żółty-czerwony). Więcej filozofii nie ma. Tylko trochę kodowania.

0

Widzieliscie diablo 3? Bo my sie chyba nie rozumiemy ;d
Mi nie chodzi o to, żeby Od razu wyskakiwalo male albo duze, chodzi mi o to ze np zadales obrazenie 700 i pojawia sie male 700 i rosnie rozmiar czcionki i znika, rozumiecie o jaki efekt mi chodzi?

To są zupelne poczatki ja chcę teraz zacząć, a skończyć nawet za kilka lat ;d Tak zeby efekt byl na prawde ciekawy, ale teraz muszę zacząć od totalnego zera.

Do tego lubię uczyć się sztuczek na przykładach kodu i to dużo lepiej rozumiem niz jak ktos my tlumaczy ;d

0

Też kiedyś myślałem że z przykładowych kodów się więcej nauczę ;D Jednak jak siadłem do analizowania różnych programów i ich fragmentów dałem sobie spokój :P

Co do twojego problemu, jeśli chcesz uzyskać efekt rosnącej czcionki to ją po prostu zwiększaj o małą wartość np. co 20milisekund otrzymasz efekt 50klatek na sekundę i będziesz miał ładną animację nic trudnego nie?
Zanikanie można zrobić podobnie, co 20milisekund zwiększaj przezroczystość stopniowo.

0

dobrze wiem, sam tak w ogóle wyzej napisalem, wiem o tym jak zrobic manipulujac tymi wielkosciami, ale mam inny problem, czego do tego zwiekszania uzyc? W czym to robic? Zwykla petla for? Nie obciazy to programu? Gdzie tego uzyc itd itd ;d

0

Polecam 6 tomów tej serii:
http://helion.pl/ksiazki/perelki-programowania-gier-vademecum-profesjonalisty-tom-1-mark-deloura,ppgvp.htm

Książki te omawiają naprawdę wiele aspektów pisania gier i pokazują mnóstwo świetnych tricków. Każdy rozdział to b. dobrze wytłumaczone zagadnienie, praktycznie nie ma tam zbędnych wiadomości.

Bo taką drogą to daleko nie zajdziemy Ci pomagając.

0

1 tom 600 stron :O 6 tomow 3600 stron, kazdy tom 110 zl, 6 tomow 660 zl :O

No trudno, kupie 1 tom i postaram sie to przeczytać jak tylko będę miał czas, teraz praca inżynierska mnie goni ;d. Ale lubie takie ksiazki tylko ze strasznie tego duzo, boje sie ze sie w tym zgubie ;/

1 użytkowników online, w tym zalogowanych: 0, gości: 1