UE4射線的碰撞與繪制


http://blog.csdn.net/qq992817263/article/details/51800657

//起點 終點
FHitResult RayGetHitResult(FVector TraceStart, FVector TraceEnd)  
{  
    FCollisionQueryParams TraceParams(FName(TEXT("TraceUsableActor")), true, this);  
    TraceParams.bTraceAsyncScene = true;  
    TraceParams.bReturnPhysicalMaterial = false;  
    TraceParams.bTraceComplex = true;  
  
    //Hit是用來存儲射線的一些數據,如Actor、坐標等等
    FHitResult Hit(ForceInit);  
    if (GetWorld()->LineTraceSingle(Hit, TraceStart, TraceEnd, ECC_Visibility, TraceParams))  
    {  
        //繪制射線  
        DrawRayLine(TraceStart, Hit.Location,0.03f);  
    }  
    return Hit;  
}  
//起點 終點 繪制線的顯示的時間
void DrawRayLine(FVector StartPos, FVector EndPos,float fLifeTime)
{
    ULineBatchComponent* const LineBatcher = GetWorld()->PersistentLineBatcher;
    const float LifeTime = fLifeTime;
    if (LineBatcher != NULL)
    {
        float LineLifeTime = (LifeTime > 0.f) ? LifeTime : LineBatcher->DefaultLifeTime;
        
        LineBatcher->DrawLine(StartPos, EndPos, FLinearColor::Red, 10, 0.f, LineLifeTime);
    }
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM