K tomu jak se jednoduse da udelat slusnej fuckup v timingu tu mam jednu perlicku z praxe - v byvale praci pri hrani nasi strilecky jsem proste citil, ze FPS ovlivnuje rychlost strelby zbrane. Zacal jsem se vrtat v kodu a zjistil, ze je to napsane uplne blbe. Mezi vystrelama se cekalo na timeout podle kadence zbrane, vystrelilo se a pak se cekalo zase stejnej timeout. To je ale blbe. Zkusim nacrtnout:
╚══════╝ Pozadovany realny interval mezi vystrely
Realny framerate (N = nevystrel, V = vystrel)
N────N────N────N────N
Optimalni chovani strelby - v kazdem framu vyhodnocujes, jestli od presneho casu posledniho vystrelu uz muzes strilet znova:
V────N────V────V────N────V────V────V─...
╚══════╩══════╩══════╩══════╩══════╩═...
Situace, kde kontrolujes, jestli uz muzes v danem framu vystrelit a kdyz jo, tak restartujes timeout:
V────N────V────N────V────N────V────N...
╚══════╝ ╚══════╝ ╚══════╝ ╚═════...
To je ale blbe! (a takhle podle me funguje i ten InvokeRepeating). Tady je videt, ze i na 8 framech s vysokou kadenci jsi schopnej u spatneho pristupu okrast hrace o 2 vystrely...to je velkej pruser! :)
TOBE by se pak klidne mohlo stat, ze ti podle FPS ty invoke-repeating/frame count fajrovani eventu muze klidne vychazet uplne na random o +- pul vteriny, takze se jednou ten fade zvladne, jindy ne...