In this tutorial, we volition be looking at how to implement a first-person camera in Unity.

Setting Up Our Player Camera

Of course, to have a first-person camera, we should take some sort of grapheme to place the camera on. So we will simply bring in a capsule GameObject:

Create Player GameObject

And so when can just adhere the Chief Photographic camera from the Hierarchy and identify it under our Player:

Attaching Chief Camera to Role player GameObject

Once its attached, we tin select it, striking the reset on the transform, and the camera will automatically be assault the Player.

Creating C# Script for the Camera

Side by side, lets create a C# script to actually control the photographic camera. Be certain to also attach the script to the Main Photographic camera:

Create C# Script
Adhere Script to Main Camera

And with that taken intendance of, we tin dive into the code.

When making a 3D game, you usually have three axis to worry about: X, Y, and Z. For this tutorial, however, we only need to be concerned near the 10 and Y centrality, since our graphic symbol merely needs to look upwards/downwardly and side-to-side. We will be getting our X and Y values from input from our mouse. So the first affair nosotros demand to exercise is declare to variables for 10 and Y:

XMouse and YMouse Variables

We should also add together a variable to adjust the speed of our camera:

Variable for Camera Sensitivity

And then, in the Update() function, add together the post-obit:

And then here, we are getting the electric current mouse delta and multiplying it by our sensitivity. Mouse delta is basically how much a value has changed between a previous iteration and the current iteration. Since the Update() office is called every frame, our mouse position volition exist updated every frame as nosotros motility our mouse. For example, if in ane frame our mouse position is (ii,four), and in the next frame information technology is becomes (5,7), then the mouse delta value nosotros get from Input.GetAxis() would be (iii,3):

5-ii = 3 (X position)

vii-iv = iii(Y position)

So we take this value, add together it to our XMouse/YMouse variables, and that will give us the current position of the mouse in the game. We can then utilize these values to rotate the camera. We tin can practise so by adding the following:

Applying Rotation to Photographic camera and Role player

The first line takes the local object, in this example our Main Photographic camera, and rotates it effectually the X axis when we move our mouse upwardly and down. The second line takes the parent object, which is our Player GameObject, and rotates the entire thespian along with the camera around the Y axis when we motion the mouse left and right. Before adding this line, yet, we should declare this variable near the top of our script:

And that is all we need in our script to get our camera working. Before nosotros run our script, make certain to select click on the Master Camera and select the Player transform located in the Inspector under the attached script:

Select the Thespian Transform

After that, nosotros can run our game.

Clamping

At that place is a slight problem with our camera. While you can await around just fine, you tin can besides move your mouse up or down and exercise a complete 360 degree rotation. This isn't usually normal when you consider most fps games will limit your range to looking straight upward or downwards, or -90/90 degrees. We can practice this as well by making use of clamping. Let'south go dorsum into our script and add the following line:

Apply Clamp constraint on YMouse

Here, Clench takes a float value, our YMouse, checks if the value is within range of the min and max value. In our instance, we utilise -ninety and xc as our min and max value, because, we want to exist able to only await straight upwardly or down When you run your game once again, yous shouldn't be able to do a consummate 360 when moving your mouse up or downwardly.

And that folks is a very basic way to brand a fps camera for your game. Hope you institute this tutorial useful equally always. Until next fourth dimension!