AActor* AFaithPlayerController::GetActorUnderMouse()
{
float MouseX = 0.f;
float MouseY = 0.f;
if (!GetMousePosition(MouseX, MouseY))
{
return nullptr;
}
AFaithHUD* HUD = Cast<AFaithHUD>(this->GetHUD());
if (HUD == nullptr)
{
return nullptr;
}
FVector WorldPosition;
FVector WorldDir;
HUD->Deproject(MouseX, MouseY, WorldPosition, WorldDir);
//AFaithCharacter* FaithChar = Cast<AFaithCharacter>(GetPawn());
//if (FaithChar == nullptr)
//{
// return nullptr;
//}
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;
}
获取鼠标所在位置的Actor
最新推荐文章于 2024-02-13 08:26:46 发布