71 lines
3.7 KiB
Markdown
71 lines
3.7 KiB
Markdown
# 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<ACameraPawn>` 获取引用并调用其操作函数
|
||
|
||
## 使用方法
|
||
|
||
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,在角色生成时自动创建分离式摄像机 |
|