获取鼠标位置所在的Actor
AActor* AYourPlayerController::GetActorUnderMouse()
{
float MouseX = 0.f;
float MouseY = 0.f;
if (!GetMousePosition(MouseX, MouseY))
{
return nullptr;
}
AHUD* HUD = this->GetHUD();
if (HUD == nullptr)
{
return nullptr;
}
FVector WorldPosition;
FVector WorldDir;
HUD->Deproject(MouseX, MouseY, WorldPosition, WorldDir);
FCollisionQueryParams Params;
FHitResult OutHit(ForceInit);
if (GetWorld()->LineTraceSingleByChannel(OutHit, WorldPosition, WorldPosition + WorldDir * 1000, ECC_Visibility, Params))
{
if (OutHit.Actor != nullptr)
{
return OutHit.Actor.Get();
}
}
return nullptr;
}