项目结构
资产
- |
|
|
|
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,意味着游戏角色回到地面 |
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 |
计算伤害机制标志位 |
STUFireDamageType和STUIceDamageType