Hi all. I’m attempting to determine whether a box is sitting in front of my character with a raycast. I’m currently doing so by calling LineTraceSingleByChannel in Tick. I have created a custom channel called “Pickupable” in the project settings, and set the box Object Type to this channel. However, when I run the game, LineTraceSingleByChannel returns true no matter how far the character is from the box, and no matter its orientation. I’ve added a debug line and the raycast appears where I’m expecting it. Why is the function behaving this way? Is the raycast colliding with the character itself, even though it’s on a different channel? I’m a newbie so there must be something fundamental I’m misunderstanding about the function. Any help would be appreciated.
Here is the tick function:
void APracticeCharacter::Tick(float DeltaTime)
{
FHitResult hitResult;
FVector start = GetActorLocation() - FVector(0.0f, 0.0f, 30.0f);
FVector end = start + 100.0 * GetActorForwardVector();
DrawDebugLine(GetWorld(), start, end, FColor(255, 0, 0), false, -1, 0, 5.0);
bool isHit = GetWorld()->LineTraceSingleByChannel(hitResult, start, end, ECollisionChannel::ECC_GameTraceChannel1);
if (isHit)
{
UE_LOG(LogTemp, Warning, TEXT("I hit a thing! "), *hitResult.Actor->GetName());
}
}