Files
loneseDocument/Source/lonese/AMyCharacter.md
meishibiezb 29a3f77908 init
2026-06-04 21:44:13 +08:00

58 lines
4.0 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.
# AMyCharacter
## 基本信息
- **类型**: UCLASS
- **父类**: ACharacter
- **源文件**: Source/lonese/MyCharacter.h
- **模块**: lonese
## 功能概述
AMyCharacter 是玩家可控的主角类,通过 Enhanced Input 支持 WASD 移动(世界空间坐标)、走/跑切换600/1200 速度)、蹲下切换,并将摄像机控制委托给 ACameraPawn。SetupPlayerInputComponent 添加输入映射上下文并绑定 8 个输入动作。摄像机输入转发至 BeginPlay 中生成的 CameraActor 子对象。
## 设计用意
作为项目主玩家角色,采用关注点分离策略:将摄像机逻辑委托给独立的 ACameraPawn自身专注于角色移动和输入绑定。使用 Enhanced Input 实现现代化的输入处理。通过状态查询方法将角色状态暴露给蓝图。
## 职责范围
角色移动控制(走、跑、蹲)、输入动作绑定、摄像机 Pawn 的生成与所有权管理。在 BeginPlay 中生成并持有 CameraActor将摄像机相关输入转发给该 Actor。不处理摄像机变换逻辑委托给 ACameraPawn
## 项目内依赖
| 依赖项 | 关系 | 源文件 |
|--------|------|--------|
| ACameraPawn | 创建/引用UPROPERTY 成员BeginPlay 中 Spawn | Source/lonese/CameraPawn.h |
| EnhancedInputSubsystems.h | #include(在 .cpp 中) | Engine |
| EnhancedInputComponent.h | #include(在 .cpp 中) | Engine |
## 对外接口
**C++ / BlueprintUFUNCTION全部 BlueprintCallable**
- `Move(FInputActionValue)` — 接收移动输入(世界空间坐标),根据走/跑状态设置速度为 600 或 1200。
- `BeginRun(FInputActionValue)` / `StopRun(FInputActionValue)` — 开始/停止跑步状态。跑步时 MaxWalkSpeed 设为 1200走路为 600。
- `BeginCrouch(FInputActionValue)` / `StopCrouch(FInputActionValue)` — 开始/停止蹲下,调用 ACharacter 的 Crouch/UnCrouch。
- `IsRunning() -> bool` — 查询当前是否处于跑步状态。
- `IsCrouching() -> bool` — 查询当前是否处于蹲下状态。
**C++ / BlueprintUPROPERTYEditAnywhere/BlueprintReadOnly**
- `DefaultMapping` (UInputMappingContext*) — 默认输入映射上下文。
- `MoveAction` / `RunAction` / `CrouchAction` (UInputAction*) — 角色移动相关输入动作。
- `CameraMoveAction` / `CameraZoomAction` / `CameraResetAction` / `CameraRotateAction` (UInputAction*) — 摄像机相关输入动作(转发至 CameraActor
- `CameraActorClass` (TSubclassOf<ACameraPawn>) — 摄像机 Pawn 类BeginPlay 中以此类生成 CameraActor。
**C++private供内部输入绑定使用**
- `CameraZoom` / `CameraRotate` / `CameraMove` / `CameraReset` — 将输入值转发给当前 CameraActor 的对应方法。
## 使用方法
- 类声明:`Source/lonese/MyCharacter.h:10-74`
- 构造函数:`Source/lonese/MyCharacter.cpp:92-103` — 设置初始移动速度等默认属性。
- BeginPlay`Source/lonese/MyCharacter.cpp:106-133` — 生成 CameraActor通过 CameraActorClass 或默认 ACameraPawn 类),挂接到自身。
- SetupPlayerInputComponent`Source/lonese/MyCharacter.cpp:143-196` — 添加 DefaultMapping 到 Enhanced Input 子系统,绑定全部 8 个输入动作到对应方法。
- Tick`Source/lonese/MyCharacter.cpp:136-140` — 仅调用 Super。
- Move 实现:`Source/lonese/MyCharacter.cpp:12-29`
- BeginRun/StopRun 实现:`Source/lonese/MyCharacter.cpp:32-41`
- BeginCrouch/StopCrouch 实现:`Source/lonese/MyCharacter.cpp:43-56`
- 摄像机输入转发:`Source/lonese/MyCharacter.cpp:59-89`
## 用例
- **BP_TestChar** — 项目主角色蓝图,继承自 AMyCharacter。在 BeginPlay 中添加 CharacterControl 插件组件UCommandRouterComponent 及各端点组件)。配置 CameraActorClass 指向 BP_CameraPawn。
- 声明:`Document/Content/Blueprints/BP_TestChar.md:5`(父类为 AMyCharacter
- 关系:`Document/Content/Blueprints/_relationships.md:7`
- 蓝图继承类通过编辑 CameraActorClass 属性替换摄像机实现,通过配置 Input 类别下的 8 个 UInputAction 属性定制键位绑定。