1. 플레이어 캐릭터의 아군 사격시 크래시 발생
AuraProjectile 클래스의 OnSphereOverlap 함수에서 IsNotFriend 함수를 사용하여 프렌들리를 확인하고 있다.
이 때 데미지 이펙트 스펙 핸들의 데이터가 nullptr로 나타난다.
void AAuraProjectile::OnSphereOverlap(UPrimitiveComponent* OverlappedComponent, AActor* OtherActor, UPrimitiveComponent* OtherComp, int32 OtherBodyIndex, bool bFromSweep, const FHitResult& SweepResult)
{
if (DamageEffectSpecHandle.Data.IsValid() && DamageEffectSpecHandle.Data.Get()->GetContext().GetEffectCauser() == OtherActor)
return;
// 아군 사격 방지
if (!UAuraAbilitySystemLibrary::IsNotFriend(DamageEffectSpecHandle.Data.Get()->GetContext().GetEffectCauser(), OtherActor))
return;
이 이유는 데미지 이펙트 스펙 핸들이 nullptr이면 반환되도록 해야 하는데 반대로 되어있기 때문이다.
if (!DamageEffectSpecHandle.Data.IsValid() || DamageEffectSpecHandle.Data.Get()->GetContext().GetEffectCauser() == OtherActor)
return;
두 조건 중 하나만 해당해도 반환되어야 하기 때문에 연산자도 수정한다.
2. 고블린 주술사에 Dissolve 이펙트 추가
(1) M_Shaman 머티리얼 디테일 설정
디졸브 효과를 적용하기 위한 기본 설정이다.
노드를 복사 붙여넣기 하고 핀을 올바르게 연결한다.
(2) 디졸브 기본 값 설정
기본적으로 녹지 않은 상태로 보이도록 디폴트 값을 지정한다.
(3) 머티리얼 인스턴스 생성 후 글로벌 파라미터 값 지정
위의 설정이 디테일 창에 뜨지 않는다면 머티리얼로 돌아가 저장 버튼을 눌러준다.
(4) BP_Shaman에 Dissolve 머티리얼 인스턴스 지정
스태프에 대해서도 똑같은 방법을 실시한다.
'UE 5 스터디 > Gameplay Ability System(GAS)' 카테고리의 다른 글
17-2. 전투 폴리싱 - (2) 게임플레이 큐 - 사운드 또는 이펙트 실행(Execute) 및 복제(Replication) (0) | 2025.01.07 |
---|---|
17-1. 전투 폴리싱 - (1) 창 고블린 사운드, 타격 이펙트와 사운드 (0) | 2025.01.07 |
16-4. AI - (9) 캐릭터 사망 이후에 AI 비활성화하기 (0) | 2025.01.03 |
16-3. AI 마법 공격 - (3) 주술사 파이어볼트 공격 어빌리티, 몽타주에 소리 추가 (0) | 2025.01.03 |
16-2. AI 마법 공격 - (2) 고블린 주술사 몽타주 (0) | 2025.01.03 |