阶段性总结
2023年6月11日 2024年1月11日
项目结构
资产
- | |||
---|---|---|---|
Content | ExternalContent | Animation | |
Levels | DefaultMap | ||
Player | Animations | ABP_BaseCharacter | |
BS_Locomotion_Run | |||
BS_Locomotion_Walk | |||
BS_Locomotion_Walk_1D | |||
AM_Death | |||
BP_STUBaseCharacter | |||
BP_STUPlayerController | |||
BP_STUGameModeBase |
代码
- | |||
---|---|---|---|
ShootThemUp | Public | Components | STUCharacterMovementComponent |
STUHealthComponent | |||
Player | STUBaseCharacter | ||
STUPlayerController | |||
Dev | STUDevDamageActor | ||
STUFireDamageType | |||
STUIceDamageType | |||
STUGameModeBase |
项目基础设置ExternalContent
- |
---|
载入 ExternalContent/Animation |
创建 DefaultMap 并设置 |
设置地板 |
配置头文件搜索路径 |
添加 PlayerStart |
设置 编译成功自动保存 |
游戏角色
- | |
---|---|
C++ | Player/STUBaseCharacter |
Blueprint | Player/BP_STUBaseCharacter |
Player/Animations/ABP_BaseCharacter | |
Player/Animations/BS_Locomotion_Run | |
Player/Animations/BS_Locomotion_Walk | |
Player/Animations/BS_Locomotion_Walk_1D | |
Player/Animations/AM_Death |
STUBaseCharacter
C++
函数成员
基本函数 | 操作 |
---|---|
构造函数 | 设置组件类型(初始化列表);初始化组件 |
BeginPlay | 检查组件是否成功创建(check);组件设置;注册委托 |
SetupPlayerInputComponent | 检查组件;绑定平移旋转跳跃跑步键位 |
- 键位绑定
回调函数 键位 相关函数 MoveRight 轴映射 左右移动 APawn::AddMovementInput;AActor::GetActorRightVector MoveForward 轴映射 前后移动 APawn::AddMovementInput;AActor::GetActorForwardVector 轴映射 左右旋转 ACharacter::AddControllerYawInput 轴映射 上下旋转 ACharacter::AddControllerPitchInput 动作映射 跳跃 ACharacter::Jump RunEnable,RunDisable 动作映射 跑步
- 接口
接口函数 操作 GetDirection 计算前进方向和速度方向的夹角;供ABP_STBaseCharacter使用 IsRunning 判断角色是否满足跑步条件;供STUCharacterMovementComponent使用;供ABP_STBaseCharacter使用
- 委托
处理函数 作用 委托成员 操作 OnChangeHealth 修改显示生命值 HealthComponent::OnChangeHealth 修改HealthTextComponent文本 OnDeath 游戏角色死亡处理 HealthComponent::OnDeath 播放死亡动画剪辑;禁止操作Character;定时销毁;切换到观察视角 OnGroundLanded 计算落地伤害 ACharacter::LandedDelegate 计算落地伤害;对Character调用TakeDamage
数据成员
组件 | 用途 |
---|---|
SpringArmComponent | 以游戏角色为中心左右旋转 |
CameraComponent | 第三视角 |
CharacterMovementComponent | 运动组件 |
HealthComponent | 生命值系统 |
HealthTextComponent | 显示生命值 |
- 标志位
说明 AbleRun 跑步键位是否按下 IsForward 向前方向键是否按下
- 游戏角色死亡逻辑
说明 DeathAnimMontage 死亡动画剪辑 LifeSpanOnDeath 销毁角色定时间隔
- 落地伤害逻辑
说明 LandedDamageRange 伤害范围 LandedDamageVelocityRange 造成伤害的速度范围
Player/BP_STUBaseCharacter
Blueprint
CapsuleComponent
MeshComponent
说明 | |
---|---|
Mesh > Skeletal Mesh Asset | HeroTPP |
Materials > Element 0 | HeroTPP |
Animation Mode | UseAnimationBlueprint |
AnimClass | ABP_BaseCharacter |
SpringArmComponent
说明 | |
---|---|
UsePawnControlRotation | true |
HealthComponent
HealthTextComponent
说明 | |
---|---|
Horizontal Alignment | Center |
Player/Animations/ABP_BaseCharacter
Blueprint
AnimGraph
-
状态机
- Locomotion > Slot > OutputPose
- 状态
状态 说明 走路 Walk BS_Locomotion_Walk;混合空间 跑步 Run BS_Locomotion_Run;混合空间1D 跳跃 JumpStart JumpLoop JumpEnd 死亡 AM_Death;动画剪辑 - 变量
- 动画输入
名称 速度 Velocity 速度和前进方向的夹角 Directon - 转换条件
说明 IsRunning C++ 满足3个条件:按下Shift;速度和前进方向夹角为0(或按下W/Up);速度不为0 IsFalling CharacterMovementComponent::IsFalling 返回true,意味着游戏角色跳起;接着返回false,意味着游戏角色回到地面
- 动画输入
- Locomotion > Slot > OutputPose
EventGraph
设置变量
- |
---|
Velocity |
Directon |
IsRunning |
IsFalling |
组件
C++
STUCharacterMovementComponent
满足跑步条件时,提高运动速度上限
参数 | 说明 |
---|---|
SpeedAcceleration | 加速系数 |
STUHealthComponent
函数成员
基本函数 | 操作 |
---|---|
构造函数 | 每帧调用Tick标志位置为false |
BeginPlay | 初始化生命值;注册AActor::OnTakeAnyDamage |
TickComponent | 屏蔽 |
- 接口
接口函数 操作 GetHealth 获取当前生命值;STBaseCharacter调用 IsDead 判断角色是否死亡
- 内部逻辑
说明 SetHealth 修改生命值;受到伤害或治疗时调用,随之广播
- 治疗
说明 OnHeal 定时器回调函数;治疗;满生命值停止定时器 StartHealTimer 受到伤害则开启定时器 StopHealTimer 受到伤害会关闭之前开启的定时器;满生命值时停止定时器
- 受伤处理函数
- OnTakeAnyDamage 进入条件:伤害为正数,当前角色存活;受伤后,停止已开启的治疗定时器;更新生命值;若角色死亡,广播,否则,开启治疗定时器
数据成员
说明 | |
---|---|
Health | 生命值 |
MaxHealth | 最大生命值 |
- 委托成员
说明 OnChangeHealth 修改生命值(SetHealth)时广播 OnDeath 受到伤害时,若死亡,广播
- 治疗
说明 HealTimer 定时器 AutoHeal 使能治疗 HealModifier 治疗量 HealRate 治疗频率 HealDelay 治疗延时
伤害
C++
STUDevDamageActor
函数成员
基本函数 | 操作 |
---|---|
构造函数 | 初始化组件 |
BeginPlay | |
Tick | 绘制球体模拟爆炸范围;对球体内以及相交Actor造成伤害 |
数据成员
说明 | |
---|---|
SceneComponent | 变换属性 |
Radius | 球体半径 |
SphereColor | 球体颜色 |
Damage | 伤害的数值特征 |
DoFullDamage | 计算伤害机制标志位 |