您的位置:首页 > 编程语言 > C语言/C++

UE4 - C++ 射线捕捉

2015-12-08 18:03 531 查看
#include"Runtime/Engine/Classes/Kismet/KismetMathLibrary.h"

//省略大部分代码
voidAMyFPS_Character::OnMoveingOrRot()
{
GetActorLocation();
//LineTraceSingle_NEW();
if(GEngine!=nullptr)
{
FHitResulthit;
autotemp_startPos=GetActorLocation();
autotemp_rota=GetActorRotation();

autotemp_endPos=FRotationMatrix(temp_rota).GetScaledAxis(EAxis::X)*500.0f;//+
//hit.
m_bodyInstance.LineTrace(hit,temp_startPos,temp_endPos,false,false);
if(hit.Actor!=nullptr&&hit.Actor!=this)
{
m_operaTarget=hit.Actor;
}
}
}

//Exa2

//Inplayercontrollerclass

//locationthePCisfocusedon
constFVectorStart=GetFocalLocation();

//256unitsinfacingdirectionofPC(256unitsinfrontofthecamera)
constFVectorEnd=Start+GetControlRotation().Vector()*256;

//Thetracedataisstoredhere
FHitResultHitData(ForceInit);

//IfTraceHitsanything
if(UMyStaticFunctionLibrary::Trace(GetWorld(),GetPawn(),Start,End,HitData))
{
//Printoutthenameofthetracedactor
if(HitData.GetActor())
{
ClientMessage(HitData.GetActor()->GetName());

//Printoutdistancefromstartoftracetoimpactpoint
ClientMessage("TraceDistance:"+FString::SanitizeFloat(HitData.Distance));
}
}


                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: