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

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

恩 就是酱紫


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值