void UAN_PRFootStep::Notify(USkeletalMeshComponent* MeshComp, UAnimSequenceBase* Animation)
{
Super::Notify(MeshComp, Animation);
APRBaseCharacter* PROwner = Cast<APRBaseCharacter>(MeshComp->GetOwner());
if(IsValid(PROwner) == true)
{
FHitResult HitResult;
bool bIsHit = false;
FVector TraceStart = PROwner->GetActorLocation();
FVector TraceEnd = TraceStart + FVector(0.0f, 0.0f, 150.0f);
DrawDebugLine(GetWorld(), TraceStart, TraceEnd, FColor::Green, false, 5.0f, 0, 2.0f);
}
}
AnimNotify에서 LineTrace를 쏴서 바닥의 재질에 따른 소리 출력을 구현하려다가 생긴 문제점이다.
LineTrace에 부딪힌게 없다고 나와서 DrawDebugLine으로 확인하려고 했는데 DebugLine이 생기질 않았다.
오늘 하루동안 이것저것 알아보니 DrawDebugLine의 InWorld인자 부분을 GetWorld()가 아닌 MeshComp의 Owner에서 GetWorld()를 넣어야 출력이 되었다.
액터들의 경우 자신이 있는 월드를 가져올 수 있지만 AnimNotify같은 월드에 존재하지 않는 것들은 GetWorld()로 월드를 가져올 수 없는 것 같다.
void UAN_PRFootStep::Notify(USkeletalMeshComponent* MeshComp, UAnimSequenceBase* Animation)
{
Super::Notify(MeshComp, Animation);
APRBaseCharacter* PROwner = Cast<APRBaseCharacter>(MeshComp->GetOwner());
if(IsValid(PROwner) == true)
{
FHitResult HitResult;
bool bIsHit = false;
FVector TraceStart = PROwner->GetActorLocation();
FVector TraceEnd = TraceStart + FVector(0.0f, 0.0f, 150.0f);
DrawDebugLine(PROwner()->GetWorld(), TraceStart, TraceEnd, FColor::Green, false, 5.0f, 0, 2.0f);
}
}
<수정한 코드>
'Unreal Engine > C++' 카테고리의 다른 글
[Unreal Engine 4 C++] SetTimer를 활용한 Delay구현 (0) | 2022.12.08 |
---|---|
[Unreal Engine 4 C++] C++에서 구현한 정적 함수와 일반 함수의 블루프린트에서 사용시 차이점 (0) | 2022.09.26 |
[Unreal Engine 4 C++] FRotator로 ForwardVector와 RightVector 구하기 (0) | 2022.02.07 |
[Unreal Engine 4 C++] 약 포인터(TWeakObjectPtr) (0) | 2021.10.14 |
[Unreal Engine 4 C++] 델리게이트에서 AddUObject, AddUFunction (0) | 2021.10.14 |