OK, no problem, let me go back over it.
so frame rates are not consistent. They change based on the hardware, and whatever else they are running.
if you are doing something that is a cycle of time you need to compensate for this fact.
as an example, let’s say you have a machine gun.
you are going to press down the primary fire, which will shoot a bullet.
Then you have a time to wait to shoot again.
If you simply use invoke, it will wait however long it takes to shoot again, BUT it does it by adding up all the time between frames until it’s greater than the value in the invoke statement, and just deletes all the time remaining.
This means the machine gun is firing slower than you want, and people with a lower FPS are shooting fewer bullets.
Instead what you should do is make your own float that adds up the time, and check it against the time between shots.
If the timer is greater than the time between shots, fire a shot and subtract the time between shots from the timer.
Now that remaining time is added to the next shot wait time.
So, if you do invoke and the time since your last shot is 1.5 seconds and the time between shots is 1 second, it will shoot and delete that 0.5 seconds.
Where as if you do your own timer it would subtract 1 from 1.5 and leave 0.5 seconds to add towards the next shot.
make sense?