【杂记】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抓取物体了。

 

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值