0
点赞
收藏
分享

微信扫一扫

UE4学习3 射线获取场景中的物体

玉新行者 2023-03-16 阅读 66


我在场景里有个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的物体 就获取他

恩 就是酱紫


举报

相关推荐

0 条评论