【UE】抓取物体

目录

效果

步骤

一、制作准心

二、简单的第三人称视角偏移

三、基于屏幕正中央的打点与射线

四、物理抓取的实现(抓取、放下、丢出)


效果

步骤

一、制作准心

  1. 新建一个HUD,这里命名为"HUD_ZhunXin",同时复制一个第三人称模板蓝图,这里命名为"BP_Character"
  1. 在世界场景设置中,设置默认pawn类为"BP_Character",HUD类为"HUD_ZhunXin"
  1. 打开"HUD_ZhunXin",点击重载"接收绘制HUD"

此时会出现如下节点,该节点输出的"SizeX"和"SizeY"分别表示视口尺寸的长和宽

接下来我们就要在视口中心画一个十字准心,可以通过"绘制线条"节点来分别绘制一条横线和竖线来表示准心。"绘制线条"节点如下,需要传入线段起始点和终点的坐标,LineColor是线段的颜色,LineThickness表示线条的粗细

通过如下节点,我们就可以绘制出十字准心中的横线线段(起始点与终点的纵坐标不变,横坐标分别在中心点横坐标基础上加减5)

再绘制出竖线线段(起始点与终点的横坐标不变,纵坐标分别在中心点纵坐标基础上加减5)

此时运行游戏可以看到十字准心已经绘制在视口正中心的位置

二、简单的第三人称视角偏移

为了让抓取时从摄像机看到的视角比较直接,这里需要对第三人称角色模板蓝图中的摄像机做一点偏移,打开"BP_Character"

对"FollowCamera"的位置和旋转做一点调整,如下所示

此时运行可以看到摄像机的画面相对于人物向右偏移了一点

还需勾选"使用Pawn控制旋转"

三、基于屏幕正中央的打点与射线

  1. 还是先打开"BP_Character",新建一个图表,这里命名为"物理抓取"

然后添加一个"物理柄组件"

在图表"物理抓取"中添加如下节点,这样当我们点击鼠标后就会从屏幕中心向场景中发出一条射线

四、物理抓取的实现(抓取、放下、丢出)

  1. 首先我们创建一个actor蓝图,命名为"BP_Cube",打开"BP_Cube",添加一个立方体组件。该蓝图代表可被抓取的物体

一定要勾选模拟物理,并且设置网格体是可移动的

将"BP_Cube"放入场景中,为了区分我们更改材质为红色

  1. 打开"BP_Character",继续添加如下节点

当我们发出射线后,先判断有没有检测到物体,如果检测到了就判断该物体的类型是不是"BP_Cube"(就是我们想抓取的这一类物体),如果是的话获取到Hit Component,

然后我们就可以利用物理柄组件来抓取物体

为了防止抓取的物体撞到玩家自己,我们设置Hit Component忽略所有Pawn的碰撞

在刚开始抓取的时候加一个判断,如果"Hit Component"不是有效的就把他抓起来

如果是有效的就把物体放下,然后把"Hit Component"置为空

还需添加如下节点,每帧设置物理抓取组件的位置

此时我们已经完成了抓取和放下的功能,效果如下:

此时有个问题是,当拾取的物体碰到其他物体时会产生非常大的旋转,我们可以通过增大网格体的角阻尼来解决这个问题:

接下来制作将物体丢出去的功能,如下图,主要通过添加冲量的方式来向指定方向扔出物体

效果如下:

参考视频:

https://www.bilibili.com/video/BV1cF411u7cf/?spm_id_from=333.999.0.0&vd_source=36a3e35639c44bb339f59760641390a8

相关推荐
GDAL9 天前
UE5入门教程:蓝图概念
ue
GDAL9 天前
Pixel Streaming入门教程:SignallingWebServer
数字孪生·ue
Dawn·张1 个月前
UE小:UE5的Pixelstreaming在捕获画面的时候没办法显示非Viewport的Slate区域按钮的ToolTip
unity·游戏引擎·ue
普世的微光2 个月前
UE-- 引入IOS framework 库 真机运行闪退
c++·ios·ue
挨代码3 个月前
UE基础 —— Actors Reference
ue
挨代码3 个月前
UE基础 —— 编辑器界面
ue
海码0073 个月前
【UE 网络】Gameplay框架在DS架构中的扮演的角色
网络·架构·php·ue
闲杂人等121384 个月前
UE/Unity加载倾斜摄影太卡问题-使用局部网格简化重构导出为FBX/OBJ
unity·重构·游戏引擎·ue·倾斜摄影·灵易智模
何去何从28574 个月前
虚幻引擎中增强输入映射中鼠标输入无反应,怎么办?
虚幻引擎·ue
Carpe_yj_Diem6 个月前
UE5 FARFilter筛选器使用方法
ue