Hi.
Actually that setup is not good,
If your wheels are already set as a child before the game starts, you should drop them in the array manually, then you don't need to create the array at all as it is already set.
if the wheels are placed @ runtime, add them to the array on creation or at least give them at 'Tag' called Wheel so you can use "Game Object Compare Tag" instead of get name and string contains fast.
On the accelerate, what you do now is : set wheel 1, next frame, set wheel 2, next frame, and so on. all the wheels should be set 1st and then do next frame.
Also a loop action is not advisable to use in a single state, you can get bad/wrong behavior.
As for the key up/down it is also better to do this from a separate fsm.
In c# we do this also all the time as it zeros the chance of bad controls behavior.