const FHitResult UGrabber::GetFirstPhysicsBodyInReach() { /// Get Player position and view data FVector PlayerViewPointLocation; FRotator PlayerViewPointRotation; GetWorld()->GetFirstPlayerController()->GetPlayerViewPoint(OUT PlayerViewPointLocation, OUT PlayerViewPointRotation); /*UE_LOG(LogTemp, Warning, TEXT("Location: %s, Rotation: %s"), *PlayerViewPointLocation.ToString(), *PlayerViewPointRotation.ToString());*/ /// Draw Debug Line based on how far can reach FVector LineTraceEnd = PlayerViewPointLocation + (PlayerViewPointRotation.Vector() * Reach); //DrawDebugLine(GetWorld(), PlayerViewPointLocation, LineTraceEnd, FColor(255, 0, 0), false, 0.f, 0.f, 10.f); /// Decide what can detect as collision FCollisionQueryParams TraceParameters(FName(TEXT("")), false, GetOwner()); FHitResult LineTraceHit; GetWorld()->LineTraceSingleByObjectType(OUT LineTraceHit, PlayerViewPointLocation, LineTraceEnd, FCollisionObjectQueryParams(ECollisionChannel::ECC_PhysicsBody), TraceParameters); AActor* ActorHit = LineTraceHit.GetActor(); if (ActorHit) { UE_LOG(LogTemp, Warning, TEXT("Line Trace Hit: %s"), *(ActorHit->GetName())); } return LineTraceHit; }
const FHitResult UGrabber::GetFirstPhysicsBodyInReach() { // Line-trace (AKA ray-cast) out to reach distance FHitResult HitResult; FCollisionQueryParams TraceParameters(FName(TEXT("")), false, GetOwner()); GetWorld()->LineTraceSingleByObjectType( OUT HitResult, GetReachLineStart(), GetReachLineEnd(), FCollisionObjectQueryParams(ECollisionChannel::ECC_PhysicsBody), TraceParameters ); return HitResult; }
/// Return hit for first physics body in reach const FHitResult UGrabber::GetFirstPhysicsBodyInReach(){ FVector PlayerViewPointLocation; /// Set up query parameters FCollisionQueryParams TraceParameters(FName(TEXT("")), false, GetOwner()); /// Line-trace (AKA ray-cast) out to reach distance FHitResult HitResult; GetWorld()->LineTraceSingleByObjectType( OUT HitResult, GetReachLineStart(), GetReachLineEnd(), FCollisionObjectQueryParams(ECC_PhysicsBody), TraceParameters ); return HitResult; }
const FHitResult UGrabber::GetFirstPhysicsBodyInReach() { /// Setup query parameters FCollisionQueryParams TraceParameters(FName(TEXT("")), false, GetOwner()); FHitResult HitResult; /// Line-trace (Aka Ray-cast) out to reach distance GetWorld()->LineTraceSingleByObjectType( OUT HitResult, GetReachLineStart(), GetReachLineEnd(), FCollisionObjectQueryParams(ECollisionChannel::ECC_PhysicsBody), TraceParameters ); /// See what we hit AActor* ActorHit = HitResult.GetActor(); if (ActorHit) { UE_LOG(LogTemp, Warning, TEXT("Line trace hit: %s"), *(ActorHit->GetName())) } return HitResult; }
const FHitResult UGrabber::GetFirstPhysicsBodyInReach() { FHitResult LineTraceHit; ///Setup query parameters FCollisionQueryParams TraceParameters(FName(TEXT("")), false, GetOwner()); GetWorld()->LineTraceSingleByObjectType( OUT LineTraceHit, GetReachLineStart(), GetReachLineEnd(), FCollisionObjectQueryParams(ECollisionChannel::ECC_PhysicsBody), TraceParameters ); AActor* actorHit = LineTraceHit.GetActor(); if (actorHit) { UE_LOG(LogTemp, Warning, TEXT("Line trace hit: %s"), *(actorHit->GetName())); } return LineTraceHit; }