I think the wait loop combined with distance based (float) comparing was slowing down...
I made a test with 500 game objects with wait loop that run alone in one scene and in another scene 500 game objects with this action.
scene1: FSM: compare float --> wait 0.1 --> go back to compare float (500 instance) Wait loop:
33ms(30fps) when flowing
66ms(15fps) when spike
cpu: 35.14ms
This Action - Scene 2: compare float every 0.1 -> compare another float every 0.1 (500 instance)
16 ms(60 fps) when flowing
33 ms(30 fps) when spike
cpu 26.12ms
But this shouldn't be noticeable with single loop, I am making a lot of changes in my game very probably performance improvement is caused by another optimization.