我在场景里有个Ball的Actor Name是Ball_0 咋个获取它
用射线。
FCollisionQueryParams TraceParmas(FName(TEXT("TRACE")),true,GetPawn());
这样就有个射线了。。FNAME好像是取了个名
TraceParams.bReturnPhysicalMaterial=false;
TraceParams.bTraceComplex=true;
TraceParams.AddIgnoredActor(GetPawn());//这个很重要。我是从鼠标在屏幕的位置打进去的射线。不忽略pawn会没法玩滴
FHitResult Hit(ForceInit);//这个Hit内容多。好像就是反馈信息的。如果射线撞到东西的话
UWorld*world=GetWorld();
if(world){
ECollisionChannel =ECC_Pawn;//这个好像是射线会穿过去吧。。囧。不是很懂 但是这样写实现了效果。。应该是
//如果不对。。请抬一手指点一波。。
world->LineTraceSingleByChannel(Hit,linebegin,lineend,C,TraceParams);//Hit 射线开始位置 结束位置 这个。碰撞通道? 最后一个参数不写就默认绑定了一射线 等于自己白写了个射线
if(Hit.GetActor()&&Hit.GetActor()->GetName()=="Ball_0")
{
Sphere=Hit.GetActor();// AAcotor*类型滴Sphere 这个就是获取到物体了
}
}
对了。。那个开始位置和结束位置。我是ETouchType::Began触摸开始位置改的。 初始位置用的UE4API DeprojectScreenPositionToWorld这个函数弄的
FVector worldLocation, worldDirection; beg=worldLocation end=worldLocation+worldDirection*1000
射线打过去 打到了名字叫BALL_0的物体 就获取他
恩 就是酱紫