void AEOCharacter::isActorInRange()
{
TArray<AActor*> Actors;
UGameplayStatics::GetAllActorsOfClass(GetWorld(), AActor::StaticClass(), Actors);
for (AActor* Actor : Actors)
{
FVector gapLoc = UKismetMathLibrary::Normal(Actor->GetActorLocation() - GetActorLocation());
FVector forwardVec = GetActorForwardVector();
float Angle = UKismetMathLibrary::DegAcos(Dot(gapLoc, forwardVec));
APlayerCameraManager *CameraManager = GetWorld()->GetFirstPlayerController()->PlayerCameraManager;
if (Angle < CameraManager->GetFOVAngle() / 2) {
FVector SpawnLoc = Actor->GetActorLocation();
GEngine->AddOnScreenDebugMessage(-1, 1.f, FColor::Red, Actor->GetName() + TEXT("----") + FString::SanitizeFloat(Angle) + TEXT("----") + FString::SanitizeFloat(CameraManager->GetFOVAngle() / 2));
}
}
}
float AEOCharacter::Dot(FVector vec1, FVector vec2) {
return vec1.X * vec2.X + vec1.Y * vec2.Y + vec1.Z * vec2.Z;
}
float AEOCharacter::Mol(FVector Vec)
{
return FMath::Sqrt(FMath::Pow(Vec.X, 2) + FMath::Pow(Vec.Y, 2) + FMath::Pow(Vec.Z, 2));
}
U++ 判断物体是否在视野范围内
最新推荐文章于 2023-03-08 18:54:14 发布