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()));
}

该博客详细介绍了如何在UE4中进行射线检测,包括获取射线起点和终点,确定射线路径,画线展示射线以及通过射线检测碰撞物体并打印其名称的步骤。
最低0.47元/天 解锁文章
1064

被折叠的 条评论
为什么被折叠?



