AI몬스터가 크기가 커질경우 플레이어가 밑에 있으니
플레이어를 향해 모션워핑을 할경우 밑을 향한채로 루트모션이 회전해버리니 ai가 땅에 박혀버리는 현상이 일어났다
수정전코드
void ABasicSkeletonEnemy::MotionWarpingPlayer()
{
FVector playerLocation = aiController->GetBlackboardComponent()->GetValueAsVector(TEXT("PlayerLocation"));
if (motionWarpComponent)
{
FVector enemyLocation = GetActorLocation();
FVector playerDirection = playerLocation - enemyLocation;
FRotator playerRotation = playerDirection.Rotation();
FTransform playerTransform(playerRotation, playerLocation);
motionWarpComponent->AddOrUpdateWarpTargetFromTransform(TEXT("PlayerTarget"), playerTransform);
}
}
playerDirection.Rotation()에서 얻은 회전값에서 Yaw만 추출해서 새로운 FRotator로 변경해주었습니다
수정후
void ABasicSkeletonEnemy::MotionWarpingPlayer()
{
FVector playerLocation = aiController->GetBlackboardComponent()->GetValueAsVector(TEXT("PlayerLocation"));
if (motionWarpComponent)
{
FVector enemyLocation = GetActorLocation();
FVector playerDirection = playerLocation - enemyLocation;
//only yaw
float yaw = playerDirection.Rotation().Yaw;
FRotator playerRotation(0.f, yaw, 0.f);
FTransform playerTransform(playerRotation, playerLocation);
motionWarpComponent->AddOrUpdateWarpTargetFromTransform(TEXT("PlayerTarget"), playerTransform);
}
}
더이상 z축으로 고꾸라지지않습니다
'Unreal 디버깅' 카테고리의 다른 글
상수에 줄 바꿈 문자가 있습니다 (한글깨짐) 오류 해결하기 (0) | 2025.05.24 |
---|---|
TActorIterator객체 다수사용 (0) | 2025.05.17 |
Unreal - 텍스처 스트리밍 풀이 예산을 초과했습니다 에러 고치기 (0) | 2025.05.15 |
BehaviorTree의 currentTime 디버깅 (0) | 2025.05.09 |
Unreal - 이동중 낑김현상 sweep부분 (1) | 2025.04.25 |