> ## Documentation Index
> Fetch the complete documentation index at: https://docs.kinemation.xyz/llms.txt
> Use this file to discover all available pages before exploring further.

# First-person camera

> Drive Sci-Fi FPS Pack FOV, free look, target camera binding, and event shakes.

export const intro_0 = "The Sci-Fi FPS Pack uses the inherited first-person camera component for FOV, free look, target-camera binding, and event shakes."

`BP_SciFi_Character` receives `AC_FirstPersonCamera` through the Gameplay Framework inheritance chain.

{intro_0}

`FirstPersonCamera` supplies the inherited camera behavior on `BP_Gameplay_Character`. Obtain `AC_FirstPersonCamera` through `BPI_Gameplay_Character.GetFirstPersonCamera`. Do not add a second controller to a framework character.

| Function                               | Result                                               |
| -------------------------------------- | ---------------------------------------------------- |
| `UpdateTargetCamera(Camera)`           | Rebinds the active camera component.                 |
| `UpdatePlayerMesh(Mesh)`               | Rebinds the first-person presentation mesh.          |
| `UpdateTargetFOV(NewFOV, InterpSpeed)` | Sets the target FOV and interpolation speed.         |
| `UpdateFOV`                            | Advances the current FOV toward the target.          |
| `PlayCameraShake(NewShake)`            | Starts a `DA_FirstPersonCameraShake`.                |
| `UpdateCameraShake`                    | Advances the active shake.                           |
| `EnableFreeLook` / `DisableFreeLook`   | Enables free look or restores normal view control.   |
| `AddFreeLookInput(Input)`              | Feeds input through the configured range and easing. |

For ADS, let the item decide whether aiming is active. Route the result through `AC_WeaponView.OnAim`, then call `UpdateTargetFOV`. Do not set the camera FOV directly on Tick from a weapon.

Keep recoil offsets in ShooterCore's recoil component. Use `DA_FirstPersonCameraShake` for event shakes. If timing must match an exact animation frame, start the shake from the matching notify.

## Example: drive ADS FOV

1. Get `AC_FirstPersonCamera` through `BPI_Gameplay_Character.GetFirstPersonCamera`.
2. When the equipped weapon starts aiming, call `UpdateTargetFOV(DesiredADSFieldOfView, ADSInterpolationSpeed)`.
3. When aiming stops, call `UpdateTargetFOV(DefaultFOV, RestoreInterpolationSpeed)`.
4. Let the component update the current camera FOV.

## Example: add a reload shake

1. Create a project `DA_FirstPersonCameraShake`.
2. From the weapon-view reload event, obtain the inherited first-person camera.
3. Call `PlayCameraShake(ProjectReloadShake)` at the intended moment.
4. Move the call to an animation notify when it must match an exact frame.

Rebind the target camera or mesh with `UpdateTargetCamera` and `UpdatePlayerMesh` if your character changes either component dynamically.
