首页 > 学院 > 开发设计 > 正文

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

2019-11-06 07:59:05
字体:
来源:转载
供稿:网友

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

恩 就是酱紫


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表