ue4-点击屏幕,获取3d世界里的物体

获取3d世界坐标,物体


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
//触屏回调
void AMyPlayerCtrler::OnTapPressed(const FVector2D& ScreenPosition, float DownTime)
{
FVector WorldPosition(0.f); //存储点击中3d实体的世界坐标
AActor* const HitActor = GetClickTarget(ScreenPosition, WorldPosition);

AMyChar* tarChar = Cast<AMyChar>(HitActor);
if (tarChar != nullptr)
{
UE_LOG(GameLogger, Warning, TEXT("--- AMyPlayerCtrler::OnTapPressed, target id:%d"), tarChar->GetUuid());
//TODO: 做你想干的事
}
}

//根据屏幕2d点ScreenPoint,和检查标记Collision_Pawn,检测是否点击中world中的某个符合条件的actor
AActor* AMyPlayerCtrler::GetClickTarget(const FVector2D& ScreenPoint, FVector& WorldPoint) const
{
FHitResult Hit;
if (GetHitResultAtScreenPosition(ScreenPoint, Collision_Pawn, true, Hit))
{
WorldPoint = Hit.ImpactPoint;
return Hit.GetActor();
}
return nullptr;
}

GetHitResultAtScreenPosition 是 APlayerController 中的接口