자세히 보시면 저 초록색 만큼이 spheretrace인데 정작 충돌판정은 하나밖에 안일어 났습니다. 위에 데미지 50 뜬게 하나에요.
이게 한개만 충돌되는게 아니고 두세개씩 될때도 있는데 문제는 어찌됐건 저 트레이스 안에 들어가도 충돌이 안될때가 많다는 겁니다.
FVector StartLoc = GetMesh()->GetSocketLocation(TEXT("SkillQ_Start_Socket"));
FVector TargetLoc = GetMesh()->GetSocketLocation(TEXT("SkillQ_End_Socket"));
TArray<AActor*> IngoreActors;
IngoreActors.Add(this);
TArray<FHitResult> HitRetArray;
bool isHit = UKismetSystemLibrary::SphereTraceMultiByProfile(GetWorld(), StartLoc, TargetLoc, 110.f, TEXT("BlockAll"), false, IngoreActors, EDrawDebugTrace::Type::ForDuration, HitRetArray, true);
if (isHit)
{
for (FHitResult Hit : HitRetArray)
{
if (AActor* Actor = Hit.Actor.Get())
{
if (Actor->ActorHasTag("Enemy")) {
float Dmg;
CharacterStat->SetMP(CharacterStat->GetMP() + 2.0f);
Dmg = CharacterStat->GetAttack();
SetCharacterLifesteal(Dmg * CharacterStat->GetLifesteal()); // 가한 데미지만큼 체력회복
UGameplayStatics::ApplyDamage(Actor, Dmg, nullptr, this, NULL);
UGameplayStatics::SpawnEmitterAtLocation(GetWorld(), HitEffect, Actor->GetActorLocation());
}
}
}
}
트레이스가 생성되는 함수입니다.
이게 애니메이션 노티파이를 이용해서 애니메이션이 재생되면 애니메이션 노티파이로 저 트레이스 함수가 실행되는건데 판정이 멋대로네요...
중요한건 저 코드와 똑같은 다른 스킬은 씹히는거 하나 없이 멀쩡하게 다 판정이 됩니다.
저 위에 쓴 코드랑 범위만 다르지 내용자체는 똑같습니다. 이건 잘만되네요...
미치것습니다. 저런 원통모양? 저게 뭐 문제인지 뭔지 같은 코드여도 범위,크기에 따라서 막 달라지네요...
MULTI스피어를 써야지 단일스피어를 쓴거겠지.
아니네 멀티썻내; 몰랑