Files
loneseDocument/Content/Blueprints/BP_CameraPawn.md
meishibiezb a8bdf281ff update
2026-06-05 03:01:15 +08:00

71 lines
3.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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在角色生成时自动创建分离式摄像机 |