Jump to content
  • Advertisement
Sign in to follow this  
  • entry
  • comments
  • views

Unity Getting started with your Third Person Game

Vinicius Marques


Getting started with your Third Person Game

Difficulty: Beginner

Link to original content



The indie game development is a trend nowadays. Recently, we can notice some of the top triple-A developers leaving their jobs, where they use to lead huge projects, to start their own game studios. Or even new talents, from best-selling indie games studios, are refusing to move to major publishers, sticking to their origins to focus on expanding and improving their indie games franchises that made them popular.

With the indie games market in such evidence, game developers have more and more tools to develop its own games nowadays. The game engines itself, responsible for making the task of game creation faster and simpler, are even more accessible, without the need of major investments. One of them in special, the Unity game engine, with triple-A quality features, offers affordable conditions for small studios, and even a free personal version. This is a perfect fit for the indie market, following its tendency to grow more and more.

The Unity creators also provide a great marketplace, the Asset Store, where it is possible to acquire several professional level packages with fair prices. Such assets can be considered one of the best allies of the indie studios, saving a lot of time and money. There are even top quality, completely free packages to consider, that leaves nothing to be desired in comparison to paid alternatives.

What we will build

In this tutorial, we will learn how to start creating a 3rd person game, using a free starter kit that we can acquire in the Asset Store. The 3rd Person Controller + Fly Mode asset is one of the most popular in the Asset Store, and was chosen by the editors as a must have asset , an essential one for those who are getting started with Unity and the store itself.

When we have completed this tutorial, we will have a fully functional third-person walking simulation, that can walk, jump strafe, aim, and even fly over the environment.

Prefer video format?

If you prefer an alternative (and more objective) version of this tutorial in video form, please click here.

Getting started

To complete this tutorial, you need to have the latest version of Unity, and at least a personal free account. If you don’t have one yet, please click here to proceed to the Unity website and follow the steps to choose a plan and download the game engine.

  • When ready, open the Unity IDE, and create a new project.

Inside the project, the first thing we need is to add an environment to navigate in. If you have any custom scenario, you can import it right now and place it into the scene. To keep it simple, we will just setup a plane as our ground, using one of Unity’s basic 3D objects.

  • On the editor menu, go to GameObject > 3D Object > Plane.


  • Select the Plane GameObject, under the Hierarchy.
  • On the Inspector tab, scale it to 2, 0.01, 2.
  • Ensure the position and rotation values for it are all 0.
  • Check the Convex option under the Mesh Collider section.
  • Check the Static option on the upper right side.


Before proceeding, we will reduce the light intensity for better scene view.

  • Select the Directional Light GameObject, under the Hierarchy.
  • Change the Intensity value to 0.3.



Downloading the assets

If you have not yet downloaded the asset package, please click above to get it:

  • On the asset page, click to download it and open in Unity . This may redirect you to the Unity Editor.
  • Back to the Unity Editor, the Asset Store tab will appear. Scroll down until you find the Import button, and click on it.
  • If prompted to confirm that you are importing a complete project, click on Import.

The Import Unity Package window will appear. Since we are using just the essential assets of this package to create our own game, we don’t need to import the entire package.

  • Click on the None button to deselect all.
  • Check the entire Animations folder.
  • Check the Animator folder.
  • Under Materials, check the Character physic material.


  • Inside Scripts > LevelScripts, select the ThirdPersonOrbitCamBasic script.
  • Check the entire PlayerScripts folder.


  • Scroll down until the ProjectSettings folder, and check the InputManager asset.
  • Click on Import.


Configuring the player avatar

Now we can proceed to setup the player avatar. If you have any custom model, you can import it right now and place it into the scene. Note that it has to be a Mecanim humanoid compatible model. For this tutorial, we will simplify and use on of Unity’s standard assets, Ethan.

  • On the menu, go to Assets > Import Package > Characters.
  • On the Import Unity Package window, click on None.
  • Scroll down until you find the Ethan.fbx model, and select it.
  • Click on Import.


  • Under the Assets folder, go to Standard Assets > Characters > ThirdPersonCharacter > Models.
  • Drag the Ethan model to the scene.
  • Under the Inspector, set the position to 0, 0, 0.
  • Open the Tag selection, and choose Player.


Before adding the player actions, we need to setup some components on the avatar.

  • On the Animator, select the Controller parameter and choose CharacterController.



Now we need to setup the player physics components.

  • Click on Add Component > Physics > Capsule Collider.


Next, we need to setup the collider so it fits the player. The following values are for the Ethan avatar.

  • Select, for the Material parameter, the Character physic material.
  • Set the center of the collider to 0, 0.79, 0.
  • Set the radius to 0.26.
  • Set the Height to 1.6.


When configuring the Capsule Collider on your own character avatar, you must avoid the following situation:


If the collider end is positioned above the mesh end, the character will get stuck when trying to move. Do not let the avatar mesh surpass the collider! The correct position is set when the bottom of the collider is at the same level or under the mesh end:


As a reference, to centralize the collider correctly, check the mesh size and use its height as the collider Height parameter. For the Center position, you may use half of the collider height minus 0.01, as the Y value of the parameter. After setting it, remember to check if the situation described above does not occur.

Now we need to add the RigidBody component to the player.

  • Click on Add Component > Physics > RigidBody.


  • Set the player Mass. We will use 70 for Ethan.
  • Under the Constraints section, check the Freeze Rotation options for the X, Y, Z axes.


Setting the player actions

Now it’s time to setup the player actions. The player actions are defined by behaviours, each one implemented in completely independent scripts. All behaviours are controlled by a behaviour manager, that defines who is the active player action. The manager also contains common features for all behaviours. This design opens the possibility to enable or disable player actions even during runtime.

  • With Ethan selected, click on Add Component > Scripts > Basic Behaviour.
  • On the Player Camera parameter of the script, drag the Main Camera.


This is the script responsible for managing the player behaviours. It contains some common variables that you can play with, if you desire. Now we can start adding the custom behaviours. The first one is the Move Behaviour, responsible for player actions like walk, run, sprint, and jump. It is usually the default player behaviour.

  • Click on Add Component > Scripts > Move Behaviour.


You can play with the parameters of this script if you desire. Check the README file that comes with the package for more details about each one of them. We’ll leave the default values for this tutorial. Now we will add the behaviour responsible for the strafe movement and the aiming mode.

  • Click on Add Component > Scripts > Aim Behaviour Basic.
  • Click on the Crosshair parameter, and select DropdownArrow (or any other custom texture you want to use).
  • On the Aim Pivot Offset parameter, change the Y value to 1.


Depending on your player’s height, you may have to adjust the Aim Pivot Offset and Aim Cam Offset parameters. Remember to check the README for more information about specific parameters. Finally, we can add a custom extra behaviour, responsible for making the player avatar fly over the environment.

  • Click on Add Component > Scripts > Fly Behaviour.


We’ll leave the parameters as is, but you can always check the README file for more information on changing this values.

Setting the 3rd person camera

The last setup we need is to set our camera as a 3rd person point of view, which will orbit around the player and follow him during his movements.

  • On the Hierarchy, click on the Main Camera.
  • Click on Add Component > Scripts > Third Person Orbit Cam Basic script.
  • On the Player parameter, drag Ethan GameObject (or any other custom avatar you have chosen).


Now that we have everything ready, we can play the scene and test it. Now is a good time to save the project and the scene.

  • Use the mouse to move the camera.
  • Press the directional or w,a,s,d keys to move.
  • You can control the movement speed using the mouse scroll.

camera.gif walk.gif run.gif

  • Hold the left shift while moving to sprint, and press space bar to jump.
  • Hold the right mouse button to aim. While aiming, press the middle mouse button to switch shoulders.
  • Press key f to toggle the fly mode.

sprint_jump.gif walk.gif fly.gif

This asset features a keyboard + mouse setup input, and also comes with full Xbox One Controller support. For the complete controls scheme, you can run the demo scene that comes with the asset. Since you will need to import all the files from the package, we recommend that you start a new project and import the full asset into it. Once loaded, play the demo scene and press F2 to see the keyboard + mouse scheme, or the Xbox One Controller Menu button  to view the gamepad scheme.

Conclusion and next steps

Now that you have basics to start with, you can try to design you own custom player actions. What about making the player swim? Or even a melee combat system?

The 3rd Person Controller + Fly Mode asset was built to make easy the task of adding new player behaviours in a completely independent manner. You can enable and disable actions during runtime, temporarily overwrite the active behaviour, and more. Take a look at the commented methods of the Basic Behaviour class, the README file, and start coding your own player behaviours right now!

If you enjoyed this package and want to know more about other custom player actions that can buy you some time and speedup the game creation process, we have a hint for you. We invite you to take a look at the Cover + Shooting System - Third Person Shooter asset, a complete starter kit for any third-person shooter game:


It comes with 2 extra behaviours, besides the basic locomotions: the cover system, with environment interactions, and a complete shooting system, with fully interactive weapons, particles and hittable targets. A time and money saver!

And that's the conclusion for our 3rd person walking simulation game setup tutorial. We want to thank you for getting in this journey with us!

About the author


Graduated in Computer Science, and with a master degree in Artificial Intelligence & High-Performance Computing, Vinicius Marques has started working with state of the art concepts and technologies, like Machine Learning and Parallel & Distributed Computing. These areas, in particular, later defined some actual IT trends: Big Data and Data Science.

Even working with state of the art tech, the passion for the games was never abandoned, taking an important role in his academic and personal lives. Having worked with Data Science/Big Data until recently, he defined that it was time to follow his passion and dedicate himself to what really gives him day by day motivation: creating games. Since then, he has dedicated his professional life to projects in many game related areas, such as Virtual Reality, Augmented Reality, Artificial Intelligence and gameplay mechanics.


Click here to visit the author’s page.


Recommended Comments

There are no comments to display.

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Advertisement
  • Advertisement
  • Blog Entries

  • Similar Content

    • By Klimtachakka
      So about a year ago I started this project. Been working on it from time to time. I just wanted to know what you guys think about it.
      Still some things missing like proper audio and the fact the game has no real purpose, it's just a sandbox.

      Work's best on PC/chrome.  (does not work at all on mobile/touch devices)

      If you wan't to try it out:  THE GAME

    • By ethancodes
      I'm fairly new to creating full 2d levels, so please feel free to correct me if I use incorrect terminology or if I'm doing something wrong here. Currently, I am using the Tile Palette with several sprites placed on it to create my levels. With that I can just run my mouse across the screen and quickly place tiles. Then on the TIlemap gameobject I place a Tilemap Collider and a Composite Collider. This works great, it's quick, simple, and efficient. However, for the next part of my character controller I'm looking at adding the ability to do a ledge grab. After doing some research, it seems like a common way to do that is to make the ledge he can grab "grabable" by putting a different collider on them. So my question is, is there an efficient way to where I can let the Tile Palette know if I use a specific corner sprite, place the ledge grab collider on it? Is there any way other than going through all the ledges in the game and manually placing them there? I'm also open to any tips on level building and using the Tilemap, etc that may help me out as, like I said, I'm pretty new to it all. Thanks!
    • By syedMohib44
      Hello guys I am a bit confused on rotation and position in unity. The thing is when I am at 0 rotation on X-Axis and I restricted my player to not let it go more than 10 on x-axis and less than -10 x-axis but when I rotated it to 90 degree It stated to move forward on left key press and backward to right key press. I just want to clamp position between 10 and -10 on every rotation It must not move differently when rotated... e.g for some understanding the scenario If a player is on a road and it is restricted to go on foot path then it should also be restricted when rotated to left or right... Please help me with this guys any help would be appreciated. 
      Thank You.
    • By Doctrina Kharkov
      We released an arcade story-driven game created by 12-13 years old children.
      All coding, art and animation was madden by them.
      Game have 5 unique mechanics levels.
    • By VoroNoise
      Main designer here with a massive scale RTS/grand strategy/city builder/god game. If this sounds interesting and you're an artist or programmer with ideas then please contact me! We can make a bundle! I already have musicians with solid tracks. About three quarters of the way through total development, just need minor details filled out and a lot of art assets worked in.

  • Advertisement

Important Information

By using GameDev.net, you agree to our community Guidelines, Terms of Use, and Privacy Policy.

GameDev.net is your game development community. Create an account for your GameDev Portfolio and participate in the largest developer community in the games industry.

Sign me up!