UE4 C++射线检测

来源:互联网 发布:淘宝切片 编辑:程序博客网 时间:2024/05/29 18:40

首先在头文件中声明一个函数Raycast

UFUNCTION(BlueprintCallable)        void  Raycast();

在CPP文件中实现

void AMyCharacter::Raycast(){    FHitResult  hitResult(ForceInit);    FVector pos, dir;    FCollisionQueryParams cqq(FName(TEXT("Combattrace")), true, NULL);    cqq.bTraceComplex = true;    cqq.bTraceAsyncScene = false;    cqq.bReturnPhysicalMaterial = false;    cqq.AddIgnoredActor(this);    pos = GetActorLocation();    //Convert=UGameplayStatics::GetPlayerController(this, 0)->DeprojectMousePositionToWorld(mouseLocation,FVector(0,0,1));    const FRotator Rotation = GetActorRotation();    dir = GetActorForwardVector();    FVector beginPos = pos;    FVector posEnd = pos + dir * 10000;    GetWorld()->LineTraceSingleByChannel(hitResult, beginPos, posEnd, ECC_WorldStatic, cqq);    DrawDebugLine(this->GetWorld(), beginPos, posEnd, FColor::Black, true, 5.0f);    if (hitResult.GetActor())    {        GEngine->AddOnScreenDebugMessage(-1, 5.0f, FColor::Red,hitResult.GetActor()->GetName() );    }}

这里写图片描述