Nerd For Tech
Published in

Nerd For Tech

Creating a Physics-Based Character Controller in Unity

2.5D Game Development

There are lots of ways you can control your character but there is always one thing in common in them that is rigidbody, colliders and such. But why take the long road when unity has given us the platform to move straight.

We can add character controller component in our character and it will handle all the collision of our character. It provides us with various properties such as Slope limit, Step offset, Radius, Height, etc which can be used to further configure our controller to match our needs.

We added a character controller but how to go about moving it?

Lets first start by creating a platform where our player can move and jump.

Add a capsule gameobject in your scene and it will be your player for now. add platforms for player to move and jump into. Now to configure the player, remove the capsule collider component from your player and add character controller component in its place.

Now that your player is set-up in your scene view, lets write some code to make our player move. Create a Player script and lets get at it.

Now lets define some variables inside the script to get going. First define a character controller variable to get access to the properties inside the character controller component inside player. Then define the speed variable at which player will be moving and the gravity variable to make player fall when in air. Finally, add a variable to store the jump value of player and another float variable to store y velocity which we will be talking about later.

Now get the reference to the character controller inside the player inside the start method.

Now store a input float that detects the ‘A’, ‘D’ or ‘Left-Arrow key’, ‘Right-Arrow key’ press and create a new vector move so that player can move in that direction.

Then define velocity which simple means moving at a certain direction with certain speed.

Now check if the player is colliding with the ground using isGrounded feature of character controller. If the player is on ground and if the player hits space key then define the y velocity script the jump height.

If the player is on air then define gravity which will drag the player down towards the ground.

Now, set the velocity in y-axis to _yVelocity variable which has the jump and gravity values applied.

Then move your player using Move method having velocity with respect to time.

And this is how it will look like in the Game view.




NFT is an Educational Media House. Our mission is to bring the invaluable knowledge and experiences of experts from all over the world to the novice. To know more about us, visit

Recommended from Medium

Snowflake Admin Series: Snowflake Parameters- a centralized cockpit control-Part 1

Guide on Writing Clean Code

HTML Parser Python Using BeautifulSoup —

JIRA Interview Question

KotlinConf — Representing State: the Kotlin Edition by Christina Lee.

Data save in DataStore in android

Sprout Coma — a new horizon on the same course

You Won’t Believe All the Things App Doctor Can Do!

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
Niraj Karki

Niraj Karki

Unity Developer

More from Medium

Adding a Main Menu to our UI

Tap & Hold & Rapid Prototyping w/ New Unity Input System

Combining Cinemachine and Timeline to Open a Treasure Chest in Unity

OnClick Event in Unity