//触屏回调
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 中的接口