void LateUpdate()
    {
        PlayerInput input     = new PlayerInput();
        AxisInput   axisInput = input.SubAxis();

        DeltaCameraAngle deltaAngle = new DeltaCameraAngle(axisInput.value)
                                      .Multi(speed)
                                      .MultiCurrentFrameTime()
                                      .Reverse();

        CameraAngle currentCameraAngle = prevCameraAngle.Add(deltaAngle);

        prevCameraAngle = currentCameraAngle;

        Vector3 lookPoint     = playerTransformCache.position + Vector3.up * height;
        Vector3 localPosition = currentCameraAngle.ToLocalPosition(distance);
        Vector3 position      = lookPoint + localPosition;

        transformCache.position = position;

        transformCache.LookAt(playerTransformCache);
    }