# BP_CameraPawn ## 基本信息 - **类型**: Blueprint (Pawn) - **父类**: ACameraPawn - **源文件**: /Game/Blueprints/BP_CameraPawn.BP_CameraPawn - **模块**: Content/Blueprints ## 功能概述 BP_CameraPawn 是分离式第三人称摄像机的蓝图实现,继承 C++ 的 ACameraPawn。在蓝图层面配置摄像机参数(初始旋转、臂长范围、速度等),并提供编辑器内可视化调整能力。 ## 设计用意 ACameraPawn 在 C++ 层提供了完整的 SpringArm+Camera 组件和缩放、旋转、移动、重置逻辑。BP_CameraPawn 作为蓝图配置层,将摄像机的默认参数(初始旋转 -60 度、初始臂长 1200、臂长范围 300-3000、旋转速度 2.0、缩放速度 10.0、移动速度 10.0、移动限制 800)暴露在蓝图中,方便在编辑器内调整和迭代。 ## 职责范围 BP_CameraPawn 负责摄像机参数的蓝图级配置和编辑器内可视化调整。底层的摄像机变换逻辑(SpringArm 的臂长插值、旋转计算、移动偏移等)全部由 ACameraPawn C++ 层处理。 ## 项目内依赖 | 依赖项 | 关系 | 源文件 | |--------|------|--------| | ACameraPawn | 父类 | C++ 源码 | ## 外部视角 BP_CameraPawn 是 ACameraPawn 的蓝图子类(自身不添加新变量或函数),从外部调用者视角,其接口全部继承自 C++ 父类: **组件(BlueprintReadOnly)** - `SpringArmComponent`(USpringArmComponent*)— 弹簧臂组件,外部只读 - `CameraComponent`(UCameraComponent*)— 摄像机组件,外部只读 - `FollowTarget`(APawn*)— 当前跟随的目标 Pawn,外部只读 **配置参数(BlueprintReadOnly,可在蓝图默认值面板调整)** - `InitialRotation`(FRotator,默认 -60°, 0°, 0°)— 初始摄像机旋转 - `InitialArmLength`(float,默认 1200)— 初始臂长 - `MinArmLength`(float,默认 300) / `MaxArmLength`(float,默认 3000)— 臂长范围 - `RotateSpeed`(float,默认 2.0)— 旋转速度 - `ZoomSpeed`(float,默认 10.0)— 缩放速度 - `MoveSpeed`(float,默认 10.0)— 移动速度 - `CameraMoveClamp`(double,默认 800.0)— 摄像机移动范围限制 **操作函数(蓝图可调用)** - `CameraZoom(FInputActionValue)` — 根据输入值缩放臂长 - `CameraRotate(FInputActionValue)` — 根据输入值旋转摄像机 - `CameraMove(FInputActionValue)` — 根据输入值移动摄像机位置 - `CameraReset(FInputActionValue)` — 重置摄像机到初始状态 **EventGraph 事件** | 事件 | 类型 | 触发时机 | 行为 | |------|------|----------|------| | `事件开始运行` | 原生覆盖 (BeginPlay) | Pawn 生成时由引擎自动触发 | 预留(当前无连线逻辑) | | `事件Actor开始重叠` | 原生覆盖 (OnActorBeginOverlap) | 与其他 Actor 碰撞时 | 预留(当前无连线逻辑) | | `事件Tick` | 原生覆盖 | 每帧 | 预留(当前无连线逻辑) | **外部交互方式** - 通常通过 BP_TestChar 的 CameraActorClass 设置自动创建 - C++ 层通过 `Cast` 获取引用并调用其操作函数 ## 使用方法 BP_CameraPawn 在项目中的典型调用流程: - **摄像机初始化流程** — BP_TestChar 的 CameraActorClass 设为 BP_CameraPawn → BP_TestChar Possess 后自动生成 BP_CameraPawn 实例 → ACameraPawn 的 C++ 逻辑绑定 SpringArm + Camera 组件 → 读取蓝图配置的 InitialRotation/InitialArmLength 初始化 - **摄像机控制流程** — 玩家输入 → Enhanced Input 系统 → ACameraPawn 的 CameraZoom/Rotate/Move/Reset 函数 → C++ 层处理 SpringArm 变换和臂长插值 ## 用例 | 引用方 | 路径 | 用途 | |--------|------|------| | BP_TestChar | `/Game/Blueprints/BP_TestChar` | 设为 CameraActorClass,在角色生成时自动创建分离式摄像机 |