PATRIKSIMA: Spravne je to tak, ze kdyz hrac nema stisknuty input strelby, tak proste cekas, az stisknutej bude. Jakmile se detekuje, ze jako jo, tak vystrelis a ulozis si nejakej TimeoutDoDalsihoVystrelu - coz je realne cas podle kadence zbrane. Pak v kazdem updatu, pokud je TimeoutDoDalsihoVystrelu > 0, tak od nej odectes time.deltaTime (cas framu). Az v okamziku, kdy je <= 0, tak muzes vystrelit znovu. Ale nenastavis ho znova na celou hodnotu, jen k aktualni hodnote tu novou prictes. Takze kdyz po odectu byla hodnota zaporna, tak to je "kompenzace" za to, zes mel vystrelit uz tech par milisekund zpet. Chtel jsem poslat
link na unity, ale to je zmatene a jeste blbe... :)
Kod by mel vypadat napr. takhle nejak:
private float fireDelta = 100f; // kadence
private float timeToShoot = 0f; // timeout do dalsiho vystrelu
private void Update()
{
if (timeToShoot > 0) timeToShoot -= time.deltaTime;
if (Input.GetButton("Fire1") && timeToShoot <=0)
{
Shoot(); // spawn projektilu, animace - whatever
timeTiShoot += fireDelta; // proste deltu prictem, neresetujem! Takze ten zaporny cas, o ktery jsme prisli delkou framu mame kompenzovany...
}
if (timeToShoot < 0) timeToShoot = 0; // ale aby se "nenabijel" firerate kdyz nestrilis nebo neco, tak tady cas resetujem na 0...
}