4.0 KiB
4.0 KiB
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++ / Blueprint(UFUNCTION,全部 BlueprintCallable)
Move(FInputActionValue)— 接收移动输入(世界空间坐标),根据走/跑状态设置速度为 600 或 1200。BeginRun(FInputActionValue)/StopRun(FInputActionValue)— 开始/停止跑步状态。跑步时 MaxWalkSpeed 设为 1200,走路为 600。BeginCrouch(FInputActionValue)/StopCrouch(FInputActionValue)— 开始/停止蹲下,调用 ACharacter 的 Crouch/UnCrouch。IsRunning() -> bool— 查询当前是否处于跑步状态。IsCrouching() -> bool— 查询当前是否处于蹲下状态。
C++ / Blueprint(UPROPERTY,EditAnywhere/BlueprintReadOnly)
DefaultMapping(UInputMappingContext*) — 默认输入映射上下文。MoveAction/RunAction/CrouchAction(UInputAction*) — 角色移动相关输入动作。CameraMoveAction/CameraZoomAction/CameraResetAction/CameraRotateAction(UInputAction*) — 摄像机相关输入动作(转发至 CameraActor)。CameraActorClass(TSubclassOf) — 摄像机 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 属性定制键位绑定。