After testing your code, the only conclusion I can come to is that you are not actually including a `Rigidbody` on your player. When we use `GetComponent<t>()`, we are referencing an *existing* component on the host `GameObject`. Given your above code, on an object that contains a `Rigidbody`, the object moves quite clearly. I have included a recording, for reference. [![With a valid rigidbody, the script easily allows me to move a cube around the screen.][2]][2] ---- ### Ensure your `GameObject` has a `Rigidbody` through code You can add a simple tag to any script to force it to require a component. If said script is attached to a `GameObject` via the Inspector, the required component is added, too. You can do this with *any* `Component`; this is what it would look like if you forced your script to attach a `Rigidbody`: [RequireComponent(typeof(Rigidbody))] public class NewBehaviourScript1 { // ... } [1]: https://i.sstatic.net/ISUyh.gif [2]: https://i.sstatic.net/lRsPN.gif [3]: https://docs.unity3d.com/ScriptReference/Time-deltaTime.html "Time.deltaTime @ docs.unity3d.com/ScriptReference/" [4]: https://docs.unity3d.com/ScriptReference/Time-fixedDeltaTime.html "Time.fixedDeltaTime @ docs.unity3d.com/ScriptReference/"