使用伤害类型
2023年6月11日 2024年1月11日
创建伤害类型
虚幻编辑器
创建Dev/STUFireDamageType
-
UDamageType
-
公有类
创建Dev/STUIceDamageType
-
UDamageType
-
公有类
为伤害来源添加伤害类型属性
C++
- 添加伤害类型参数
protected
ShootThemUp: Dev/STUDevDamageActor.h
1UPROPERTY(EditAnywhere) 2TSubclassOf<UDamageType> DamageType;
- 造成伤害时,传入伤害类型
ShootThemUp: Dev/STUDevDamageActor.cpp
1// Tick 2// UGameplayStatics::ApplyRadialDamage(GetWorld(), Damage, GetActorLocation(), Radius, nullptr, {}, this, nullptr, DoFullDamage); 3UGameplayStatics::ApplyRadialDamage(GetWorld(), Damage, GetActorLocation(), Radius, DamageType, {}, this, nullptr, DoFullDamage);
在伤害处理函数中输出伤害来源信息
C++
ShootThemUp: Components/STUHealthComponent.cpp
1#include "Dev/STUFireDamageType.h" 2#include "Dev/STUIceDamageType.h" 3 4// OnTakeAnyDamage 5if (DamageType) 6{ 7 if (DamageType->IsA<USTUFireDamageType>()) 8 { 9 UE_LOG(LogHealthComponent, Display, TEXT("So Hooooooot !!!")); 10 } 11 else if (DamageType->IsA<USTUIceDamageType>()) 12 { 13 UE_LOG(LogHealthComponent, Display, TEXT("So Cooooooooold !!!")); 14 } 15}
查看
虚幻编辑器
为伤害来源设置DamageType属性
-
DamageSphere-Red
选择STUFireDamageType
-
DamageSphere-Blue
选择STUIceDamageType
查看日志
-
游戏角色进入到
DamageSphere-Red
-
游戏角色进入到
DamageSphere-Blue