配置环境:UE4.24+Vs2019 为了写一个功能,需要使用到UE4 的C++射线检测。但国内网站有的,大部分都蓝图的实现方法,官方文档里面也没有。仅有的几个,还是不能使用。在国外网上找了一个勉强能用的,但却无法检测到物体,然后就再稍微改了一点。
void AFondCreater::Tick(float DeltaTime)
{
Super::Tick(DeltaTime);
FHitResult OutHit;
FVector Start = GetActorLocation();
Start.Z += 50.f;
Start.X += 200.f;
FVector ForwardVector = GetActorForwardVector();
FVector End = ((ForwardVector * 500.f) + Start);
DrawDebugLine(GetWorld(), Start, End, FColor::Green, false, 1, 0, 5);
bool isFinsh=GetWorld()->LineTraceSingleByObjectType(OutHit, Start, End, ECC_WorldStatic);
if (Cast<AActor>(OutHit.GetActor()))
{
GEngine->AddOnScreenDebugMessage(-1, 1.f, FColor::Green, FString::Printf(TEXT("The Component Being Hit is: %s"), *OutHit.GetComponent()->GetName()));
}
}
参考文献: Actor Line Trace 【UE4】LineTrace 功能详解
|