LineTrace.h
#pragma once
#include "CoreMinimal.h"
#include "Components/ActorComponent.h"
#include "LineTrace.generated.h"
UCLASS(ClassGroup = (Custom), meta = (BlueprintSpawnableComponent))
class FIRSTGAME_API ULineTrace : public UActorComponent
{
GENERATED_BODY()
public:
ULineTrace();
protected:
// Called when the game starts
virtual void BeginPlay() override;
public:
FHitResult LineTraceSingle(FVector Start, FVector End);
FHitResult LineTraceSingle(FVector Start, FVector End, bool ShowDebugLine);
FHitResult SphereTrace(FVector Start, FVector End);
};
LineTrace.cpp
#include "LineTrace.h"
#include "Kismet/KismetSystemLibrary.h"
#include "Engine/Engine.h"
#include "DrawDebugHelpers.h"
#include "Kismet/GameplayStatics.h"
#include <Kismet/KismetMathLibrary.h>
#include "GameFramework/CharacterMovementComponent.h"
#include "GameFramework/Actor.h"
// Sets default values for this component's properties
ULineTrace::ULineTrace()
{
}
// Called when the game starts
void ULineTrace::BeginPlay()
{
Super::BeginPlay();
}
FHitResult ULineTrace::LineTraceSingle(FVector Start, FVector End)
{
FHitResult HitResult;
FCollisionObjectQueryParams CollisionParams;
FCollisionQueryParams CollisionQueryParams;
CollisionQueryParams.AddIgnoredActor(GetOwner());
if (GetWorld()->LineTraceSingleByObjectType(
OUT HitResult,
Start,
End,
CollisionParams,
CollisionQueryParams
))
{
return HitResult;
}
else
{
return HitResult;
}
}
FHitResult ULineTrace::LineTraceSingle(FVector Start, FVector End, bool ShowDebugLine)
{
FHitResult Actor = LineTraceSingle(Start, End);
if (ShowDebugLine) {
DrawDebugLine(
GetWorld(),
Start,
End,
FColor::Red,
false,
3.0f,
0,
5.0f
);
}
return Actor;
}