1.获得射线起点
FVector StartLocation;
FRotator PlayerRotation;
this->GetWorld()->GetFirstPlayerController()
->GetPlayerViewPoint(StartLocation, PlayerRotation);
2.获得射线终点
FVector EndLocation = PlayerRotation.Vector() * RayLength;
3.获得射线路径
FVector LineTrace = StartLocation + EndLocation;
4.画出射线
DrawDebugLine(GetWorld(), StartLocation, LineTrace, FColor(255, 0, 0),
false, 0.0f, 0.0f, 10.0f);
5.发出射线,并返回被击中物体
FHitResult HitResult;
FCollisionQueryParams QueryParams = FCollisionQueryParams("", false, GetOwner());
GetWorld()->LineTraceSingleByObjectType(HitResult, StartLocation,
LineTrace,
FCollisionObjectQueryParams(ECollisionChannel::ECC_PhysicsBody),
QueryParams );
6.打印目标名字
AActor *HitObject = HitResult.GetActor();
if (HitObject != nullptr)
{
UE_LOG(LogTemp, Warning, TEXT("Name: %s"), *(HitObject->GetName()));
}