UE4 C++抓取物体步骤

在这之前,我已经完成了设置射线的工作(通过函数DrawDebugLine)

绘制好射线之后,可以得到射线的起点位置(也就是DefaultPawn)和终点位置(通过向量加法)

关于射线检测的函数  可以参考博客:

http://blog.csdn.net/xiaozhi0999/article/details/78355610

大神写的非常详细。

然后就是用射线来抓取物体的实现步骤:

Step1:

获取两个Pawn中的组件:

PhysicsHandle和Inputcomponent

一个用来绑定物体,一个用来读取输入

将输入组件绑定到按键和事件Grab上,使用函数InputComponent->BindAction();

Step2:

填充Grab函数。

首先做射线检测,当检测到物体时,通过PhysicsHandle->GrabComponentAtLocationWithRotation函数绑定物体组件到Pawn的PhysicsHandle上。(注意:这里只是绑定,并没有改变被绑定组件的位置)

相应的,松开物体可以用如下判断:

if (PhysicsHandle->GetGrabbedComponent() != nullptr)
{
PhysicsHandle->ReleaseComponent();

}

同样需要提前将Release绑定按键和事件。然后在Realease函数中填充上面的判断。

Step3:

在Tickcomponent函数中每帧改变被绑定物体的位置

if (PhysicsHandle->GetGrabbedComponent() != nullptr)
{
PhysicsHandle->SetTargetLocation(GetLineEndPos());

}

这样就可以实现UE4抓取物体了。


步骤写的比较粗略,主要是我的一个学习小结,如果有问题欢迎来信。

猜你喜欢

转载自blog.csdn.net/qq_40947718/article/details/79435176