六一的部落格


关关难过关关过,前路漫漫亦灿灿。




创建伤害类型

虚幻编辑器


创建Dev/STUFireDamageType

  • UDamageType


  • 公有类



创建Dev/STUIceDamageType

  • UDamageType

  • 公有类



为伤害来源添加伤害类型属性

C++

  1. 添加伤害类型参数

    protected

    ShootThemUp: Dev/STUDevDamageActor.h
    1UPROPERTY(EditAnywhere)
    2TSubclassOf<UDamageType> DamageType;
  2. 造成伤害时,传入伤害类型

    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属性

  1. DamageSphere-Red 选择 STUFireDamageType


  2. DamageSphere-Blue 选择 STUIceDamageType



查看日志

  1. 游戏角色进入到 DamageSphere-Red


  2. 游戏角色进入到 DamageSphere-Blue


使用伤害类型



创建伤害类型

虚幻编辑器


创建Dev/STUFireDamageType

  • UDamageType


  • 公有类



创建Dev/STUIceDamageType

  • UDamageType

  • 公有类



为伤害来源添加伤害类型属性

C++

  1. 添加伤害类型参数

    protected

    ShootThemUp: Dev/STUDevDamageActor.h
    1UPROPERTY(EditAnywhere)
    2TSubclassOf<UDamageType> DamageType;
  2. 造成伤害时,传入伤害类型

    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属性

  1. DamageSphere-Red 选择 STUFireDamageType


  2. DamageSphere-Blue 选择 STUIceDamageType



查看日志

  1. 游戏角色进入到 DamageSphere-Red


  2. 游戏角色进入到 DamageSphere-Blue