1.여기에 매개변수 추가(blcok, critical)
void UAuraAttributeSet::ShowFloatingText(const FEffectProperties& Props, float Damage, bool bBlockedHit, bool bCriticalHit) const
{
//데미지위젯을 데미지받은 캐릭위에 뛰우기
if(Props.SourceCharacter!=Props.TargetCharacter) //자기자신은 제외
{
AAuraPlayerController* PC= Cast<AAuraPlayerController>(UGameplayStatics::GetPlayerController(Props.SourceCharacter,0));
if(PC)
{
PC->ShowDamageNumber(Damage,Props.TargetCharacter,bBlockedHit,bCriticalHit);
}
}
}
2. PC의 함수에도 추가
void AAuraPlayerController::ShowDamageNumber_Implementation(float DamageAmount, ACharacter* TargetCharacter, bool bBlockedHit, bool bCriticalHit)
{
//대상캐릭터위치에 위젯생성함
if(IsValid(TargetCharacter) && DamageTextComponentClass)
{
UDamageTextComponent* DamageText= NewObject<UDamageTextComponent>(TargetCharacter, DamageTextComponentClass);
DamageText->RegisterComponent(); //위젯을 동적생성 -> 수동으로 컴포넌트 등록
//Text를 대상캐릭터의 루트에 붙이기
DamageText->AttachToComponent(TargetCharacter->GetRootComponent(),FAttachmentTransformRules::KeepRelativeTransform);
DamageText->DetachFromComponent(FDetachmentTransformRules::KeepWorldTransform); //계속못따라다니도록 분리, 그냥 사라질숫자임
DamageText->SetDamageText(DamageAmount, bBlockedHit,bCriticalHit); //Text값 설정
}
}
3. 위젯에도 추가
UCLASS()
class AURA_API UDamageTextComponent : public UWidgetComponent
{
GENERATED_BODY()
public:
UFUNCTION(BlueprintImplementableEvent, BlueprintCallable)
void SetDamageText(float Damage, bool bBlockedHit, bool bCriticalHit);
};
4. BP에서 실제구현
* 분기에따라 색상설정
블록 ox, 크리 ox
새로만든 함수이용해 컬러설정
* 크리계수 올리기
크리는 방관에 의존함 -> 둘다 계수를 올려줌
'UE5 > Advance Damage Techniques' 카테고리의 다른 글
[UE5] 방마저 속성추가 / 리플리케이션 / 속성위젯에 속성추가 (0) | 2024.08.18 |
---|---|
[UE5] 데미지 유형들 추가, 확장성 refactor (0) | 2024.08.15 |
[UE5] 크리시 글자 애니메이션 구현, 메시지 구현, 인스턴싱 정책 (0) | 2024.08.14 |
[UE5] Custum GE Context // Net Serialize, Custom Effect Context (0) | 2024.08.14 |
[UE5] Custom GE Context (0) | 2024.08.14 |