103 - Dissolving with Curves
This commit is contained in:
parent
e7afae361b
commit
018013cb5d
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
@ -49,6 +49,8 @@ ABlasterCharacter::ABlasterCharacter()
|
||||||
TurningInPlace = ETurningInPlace::ETIP_NotTurning;
|
TurningInPlace = ETurningInPlace::ETIP_NotTurning;
|
||||||
NetUpdateFrequency = 66.f;
|
NetUpdateFrequency = 66.f;
|
||||||
MinNetUpdateFrequency = 33.f;
|
MinNetUpdateFrequency = 33.f;
|
||||||
|
|
||||||
|
DissolveTimeline = CreateDefaultSubobject<UTimelineComponent>(TEXT("DissolveTimelineComponent"));
|
||||||
}
|
}
|
||||||
|
|
||||||
void ABlasterCharacter::BeginPlay()
|
void ABlasterCharacter::BeginPlay()
|
||||||
|
@ -120,6 +122,15 @@ void ABlasterCharacter::MulticastEliminated_Implementation()
|
||||||
{
|
{
|
||||||
bEliminated = true;
|
bEliminated = true;
|
||||||
PlayEliminatedMontage();
|
PlayEliminatedMontage();
|
||||||
|
|
||||||
|
if (DissolveMaterialInstance)
|
||||||
|
{
|
||||||
|
DynamicDissolveMaterialInstance = UMaterialInstanceDynamic::Create(DissolveMaterialInstance, this);
|
||||||
|
GetMesh()->SetMaterial(0, DynamicDissolveMaterialInstance);
|
||||||
|
DynamicDissolveMaterialInstance->SetScalarParameterValue(TEXT("Dissolve"), 0.55f);
|
||||||
|
DynamicDissolveMaterialInstance->SetScalarParameterValue(TEXT("Glow"), 200.f);
|
||||||
|
}
|
||||||
|
StartDissolve();
|
||||||
}
|
}
|
||||||
|
|
||||||
void ABlasterCharacter::EliminationTimerFinished()
|
void ABlasterCharacter::EliminationTimerFinished()
|
||||||
|
@ -477,6 +488,24 @@ void ABlasterCharacter::UpdateHUDHealth()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void ABlasterCharacter::UpdateDissolveMaterial(float DissolveValue)
|
||||||
|
{
|
||||||
|
if (DynamicDissolveMaterialInstance)
|
||||||
|
{
|
||||||
|
DynamicDissolveMaterialInstance->SetScalarParameterValue(TEXT("Dissolve"), DissolveValue);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void ABlasterCharacter::StartDissolve()
|
||||||
|
{
|
||||||
|
DissolveTrack.BindDynamic(this, &ABlasterCharacter::UpdateDissolveMaterial);
|
||||||
|
if (DissolveCurve && DissolveTimeline)
|
||||||
|
{
|
||||||
|
DissolveTimeline->AddInterpFloat(DissolveCurve, DissolveTrack);
|
||||||
|
DissolveTimeline->Play();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void ABlasterCharacter::SetOverlappingWeapon(AWeapon* Weapon)
|
void ABlasterCharacter::SetOverlappingWeapon(AWeapon* Weapon)
|
||||||
{
|
{
|
||||||
if (OverlappingWeapon)
|
if (OverlappingWeapon)
|
||||||
|
|
|
@ -5,6 +5,7 @@
|
||||||
#include "CoreMinimal.h"
|
#include "CoreMinimal.h"
|
||||||
#include "Blaster/Interfaces/InteractWithCrosshairInterface.h"
|
#include "Blaster/Interfaces/InteractWithCrosshairInterface.h"
|
||||||
#include "Blaster/Types/TurningInPlace.h"
|
#include "Blaster/Types/TurningInPlace.h"
|
||||||
|
#include "Components/TimelineComponent.h"
|
||||||
#include "GameFramework/Character.h"
|
#include "GameFramework/Character.h"
|
||||||
#include "BlasterCharacter.generated.h"
|
#include "BlasterCharacter.generated.h"
|
||||||
|
|
||||||
|
@ -123,6 +124,26 @@ private:
|
||||||
FTimerHandle EliminationTimer;
|
FTimerHandle EliminationTimer;
|
||||||
|
|
||||||
void EliminationTimerFinished();
|
void EliminationTimerFinished();
|
||||||
|
|
||||||
|
// Dissolve effect
|
||||||
|
UPROPERTY(VisibleAnywhere)
|
||||||
|
UTimelineComponent* DissolveTimeline;
|
||||||
|
FOnTimelineFloat DissolveTrack;
|
||||||
|
|
||||||
|
UPROPERTY(EditAnywhere)
|
||||||
|
UCurveFloat* DissolveCurve;
|
||||||
|
|
||||||
|
UFUNCTION()
|
||||||
|
void UpdateDissolveMaterial(float DissolveValue);
|
||||||
|
void StartDissolve();
|
||||||
|
|
||||||
|
// Dynamic instance that we can change at runtime
|
||||||
|
UPROPERTY(VisibleAnywhere, Category = Elimination)
|
||||||
|
UMaterialInstanceDynamic* DynamicDissolveMaterialInstance;
|
||||||
|
|
||||||
|
// Material instance set on the Blueprint, used with the dynamic material instance
|
||||||
|
UPROPERTY(EditAnywhere, Category = Elimination)
|
||||||
|
UMaterialInstance* DissolveMaterialInstance;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
void SetOverlappingWeapon(AWeapon* Weapon);
|
void SetOverlappingWeapon(AWeapon* Weapon);
|
||||||
|
|
Loading…
Reference in New Issue