0. 개요
몬스터가 사망하면 부식되어 사라지는 것처럼 보이는 효과를 추가할 것이다.
1. 디졸브 이펙트 - M_GoblinDissolve
해당 이펙트의 Dissolve 매개 변수를 사용하면 변수 값이 증가함에 따라 시체가 녹는 것처럼 보이게 된다.
(1) 동적 머티리얼 인스턴스(Dynamic Material Instance) - AuraCharacterBase
런타임 시 매개변수가 동적으로 변경될 수 있는 머티리얼 인스턴스를 말한다.
// 디졸브 이펙트
void Dissolve();
UFUNCTION(BlueprintImplementableEvent)
void StartDissolveTimeline(UMaterialInstanceDynamic* DynamicMaterialInstance);
UPROPERTY(EditAnywhere, BlueprintReadOnly)
TObjectPtr<UMaterialInstance> DissolveMaterialInstance;
UPROPERTY(EditAnywhere, BlueprintReadOnly)
TObjectPtr<UMaterialInstance> WeaponDissolveMaterialInstance;
타임라인을 이용한 함수는 블루프린트에서 구현하는 것이 용이하므로 블루프린트에서 정의할 수 있도록 지정한다.
void AAuraCharacterBase::Dissolve()
{
// 메시 디졸브
if (IsValid(DissolveMaterialInstance))
{
// 동적 머티리얼 인스턴스 생성
UMaterialInstanceDynamic* DynamicMI = UMaterialInstanceDynamic::Create(DissolveMaterialInstance, this);
// 메시에 머티리얼 적용
GetMesh()->SetMaterial(0, DynamicMI);
// 타임라인 실행
StartDissolveTimeline(DynamicMI);
}
// 무기 디졸브
if (IsValid(WeaponDissolveMaterialInstance))
{
// 동적 머티리얼 인스턴스 생성
UMaterialInstanceDynamic* DynamicMI = UMaterialInstanceDynamic::Create(WeaponDissolveMaterialInstance, this);
// 메시에 머티리얼 적용
Weapon->SetMaterial(0, DynamicMI);
// 타임라인 실행
StartDissolveTimeline(DynamicMI);
}
}
캐릭터 메시와 무기에 대해 디졸브 동적 머티리얼 인스턴스를 생성해 적용한다.
void AAuraCharacterBase::MulticastHandleDeath_Implementation()
{
// 무기 랙돌
Weapon->SetSimulatePhysics(true);
Weapon->SetEnableGravity(true);
Weapon->SetCollisionEnabled(ECollisionEnabled::PhysicsOnly);
// 캐릭터 랙돌
GetMesh()->SetSimulatePhysics(true);
GetMesh()->SetEnableGravity(true);
GetMesh()->SetCollisionEnabled(ECollisionEnabled::PhysicsOnly);
GetMesh()->SetCollisionResponseToChannel(ECC_WorldStatic, ECR_Block); // worldstatic에 대해 부딫힘
// 캐릭터 충돌 비활성화
GetCapsuleComponent()->SetCollisionEnabled(ECollisionEnabled::NoCollision);
Dissolve();
}
디졸브 함수는 사망 처리에서 호출한다.
(2) 이벤트와 타임라인 - BP_EnemyBase
시간에 따라 Dissolve 매개변수를 증가시킬 것이다. Dissolve의 최댓값은 0.55이다.
타임라인을 생성하고 이름을 Dissolve Timeline로 변경 후 더블클릭한다.
트랙을 추가하여 이름을 변경하고 두 개의 키를 추가한다.
처음 시작 값은 -0.1이고 3초 뒤에 디졸브가 완전히 실행된 값인 0.55로 지정한다.
(3) 블루프린트 - BP_EnemyBase
위와 같이 노드를 연결한다.
(4) 블루프린트 - BP_Goblin_Spear, BP_Goblin_Slingshot
클래스 디폴트를 클릭하고 몬스터 별로 디테일 창에서 디졸브 머티리얼 인스턴스를 선택한다.
'UE 5 스터디 > Gameplay Ability System(GAS)' 카테고리의 다른 글
11-9. 게임플레이 이펙트 - (8) 실행 계산(Execution Calculation) (0) | 2024.12.19 |
---|---|
11-8. UI - (8) 플로팅 텍스트 위젯 - 데미지 표현 (0) | 2024.12.19 |
11-6. 몬스터 - (3) 죽음 구현 (0) | 2024.12.18 |
11-5. 몬스터 - (2) 피격 반응 게임플레이 어빌리티 부여 및 활성화 (0) | 2024.12.18 |
11-4. 몬스터 - (1) 피격에 대한 반응 - 게임플레이 어빌리티 생성 (0) | 2024.12.18 |