---
description: In this section we will set up a camera from scratch.
---

# Camera setup

Create an empty Game Object FPCameraSocket and CameraHolder. Then, parent your camera to the CamerHolder:

<figure><img src="https://3983499731-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxsGuM7QMKoTm8rnHX3cO%2Fuploads%2FXVk24gM2OJTXzWbN0zMd%2Fimage.png?alt=media&#x26;token=d76ee60c-f163-4038-90b1-ed60563d356e" alt="" width="204"><figcaption></figcaption></figure>

**FPCameraSocket** will only be used to define the camera default position. This is useful, if you want to use procedural aiming for third-person view too.

**CameraHolder** is simply a camera parent object, which will be used for free aiming mechanic.

Now we need to add an **FPSCamera** script to the Camera. This script will procedurally apply camera animations and FOV changes:

<figure><img src="https://3983499731-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxsGuM7QMKoTm8rnHX3cO%2Fuploads%2FP9CEs37b21QC01kGFU9v%2Fimage.png?alt=media&#x26;token=d7005249-9814-48ff-bfb1-57a29d65521f" alt="" width="365"><figcaption></figcaption></figure>

**Camera Data** is a Scriptable Object, which defines FOV levels and smoothing:

<figure><img src="https://3983499731-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxsGuM7QMKoTm8rnHX3cO%2Fuploads%2FU5ol9RpgtTklvXUeA1yV%2Fimage.png?alt=media&#x26;token=cd02c601-044a-464f-b68e-e3b05e2a452f" alt="" width="356"><figcaption></figcaption></figure>

* **Base FOV** defines default field of view.
* **Aim FOV** defines aiming field of view.
* **Fov Curve** defines how the FOV will change.
* **Aim Speed** defines FOV change speed.
* **Extra Smoothing** defines additional smoohing speed, applied on top of the Fov Curve. Note: if set to zero no smoothing is applied.

The camera setup is complete, and we can now move to the animation layers setup.
