Simple Player Movement In Unity

Player Movement

If there’s one thing that we all can agree upon, that’s the fact that every game has an object that we as players control, be it an FPS/TPS where we control an avatar or a Puzzle game like Tetris or Chess where one moves the tiles or game pieces. In this scenario I have chosen a cube as my partner as I develop this prototype.

Setting up the Player !

Let’s start by getting the player set up. We can do that by doing the following (To understand the basic terminology and an overview of the editor you can click here),

An alternate way to do this is, select the “+” button found on the top left corner of your “Hierarchy” panel and this should present you with a list of options one being “3D Object” select it and select whatever object you wish to make as your protagonist(“cube” in my case).

In case you were like me and you don’t see your created object in your game view, this could be because your object got created behind the “Main Camera” in that case just select your newly created object(Player) and reset it’s transform by doing the following.

Styling the scene!

Before we move forward with player movement, let’s add some style in your game. Let’s start with adding colour.

Start of with creating a material for your player
Setting background Colour as well as adding a colour to Player

Make sure to drag your “Player_Mat” material onto your “Player” game object in-order to get your “Player” a colour as done above.

Aspect Ratio!

It is important that your game looks the same on all platforms irrespective of the size of the screen. To do so you can set an aspect ratio for your game. I’m going to go with “16:9”.

Click on the following
Select 16:9 Aspect Ratio

If you wish to you can create your own custom aspect ratio by clicking on the “+” button.

Player Movement!

Let’s start out by creating a script.

Drag the player script onto your player object as shown

Upon completion, open the script and let's get your player moving.

The first thing needed to get our player moving is taking user inputs. But before progressing further you first need to familiarise yourselves with Unity’s inbuilt Input Manager system.

Here we observe that for horizontal movement we use the “horizontal” axis and for the vertical movement we use the “vertical” axis.

Here “Input.GetAxis” returns a value ranging from “-1” to “1” when nothing is pressed it returns “0” but let’s say we press “d” or the “right arrow key” this returns a value greater than “0” and if the button is held down for a few seconds it returns “1”. So basically, it returns gradually increasing or decreasing values depending on the direction, where the upper limits are “1” and “-1” respectively.

Every game object has a “Transform” component attached to it which contains position, rotation and scale of an object. Manipulating the position can get your player moving. In order to influence it to move in a direction and distance we wish for it to move we use the following.

It’s observed that “Translate()” requires a 3 dimensional Vector determining the position of where your “Player” would move. i.e if we were to do the following

this is equivalent to Vector3.right

This would imply that our player would move to the position (1,0,0) in our coordinate plane, and if we want our player to move right continuously we just have to put the above in and “Update” Function which basically runs once every frame, so if your game runs at 60 frames per second then the “Update” function will be running 60 times. But this would mean if our game were to run at 120 Frames a second then we would move faster, so this would imply that the more powerful the system the faster we move. In order to avoid this and make movement frame rate independent we use,

This gives us the time between the frames, so upon multiplying it makes your player movement frame rate independent.

So, putting all of it together we can say that in order to move according to user input we can do the following,

Place this in your Update Method/Function to get your player moving

This is how I got my cube to move.

Aspiring Game Developer with experience in the field of Machine Learning.

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store