It might have to do with the Update method in Unity (which is framerate dependent). You may need to multiply your speed variable by Time.deltaTime (which is a pre-existing type in Unity) in order to make it framerate independent and run consistently across platforms and machines. Or if you're using Rigidbody for the movement, you can put your movement method in the the Unity FixedUpdate method which will also have the same result. Or maybe I'm just preaching to the choir here and you've already tried all that.