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;
|
||||
NetUpdateFrequency = 66.f;
|
||||
MinNetUpdateFrequency = 33.f;
|
||||
|
||||
DissolveTimeline = CreateDefaultSubobject<UTimelineComponent>(TEXT("DissolveTimelineComponent"));
|
||||
}
|
||||
|
||||
void ABlasterCharacter::BeginPlay()
|
||||
|
@ -120,6 +122,15 @@ void ABlasterCharacter::MulticastEliminated_Implementation()
|
|||
{
|
||||
bEliminated = true;
|
||||
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()
|
||||
|
@ -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)
|
||||
{
|
||||
if (OverlappingWeapon)
|
||||
|
|
|
@ -5,6 +5,7 @@
|
|||
#include "CoreMinimal.h"
|
||||
#include "Blaster/Interfaces/InteractWithCrosshairInterface.h"
|
||||
#include "Blaster/Types/TurningInPlace.h"
|
||||
#include "Components/TimelineComponent.h"
|
||||
#include "GameFramework/Character.h"
|
||||
#include "BlasterCharacter.generated.h"
|
||||
|
||||
|
@ -123,6 +124,26 @@ private:
|
|||
FTimerHandle EliminationTimer;
|
||||
|
||||
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:
|
||||
void SetOverlappingWeapon(AWeapon* Weapon);
|
||||
|
|
Loading…
Reference in New Issue