UE5-《Interaction System Starter Pack》交互系统入门包

本教程为UE5 2023年6月份免费资产,个人制作的简单教程,。。。

目录
第一章 常见问题
1.1 名字过长
1.2 虚拟阴影
第二章 大致结构浏览
2.1 Content目录
2.2 Blueprint 文件夹
2.3 Core文件夹
2.4 蓝图接口
2.5 枚举
2.7 Blueprint --> Connection文件夹
2.7 Blueprint --> Connection文件夹
2.8 Blueprint --> Objects文件夹
2.9 UI 文件夹
2.6 Blueprint --> Input文件夹
第三章 快速上手--展台示例
Some Doors展台
第四章 蓝图简易分析
技术细节
特点:
Buttons 按钮
Pressure Plates 压力板
Input Item Slots 输入物品槽
Multiple types of doors 多种类型的门 (regular, sliding, and double sliding doors 普通门、滑动门和双向滑动门)
Physics-based items 基于物理的item
Breakable items 可破坏的item
Mineable and interactable foliage 可开采和可交互的植被 (trees and rocks 树木和岩石)
Guns 枪械
Pickaxes 镐
Synced Inputs 状态同步输入
蓝图数量:
33
输入方式:
键盘和鼠标(其他输入方式可以轻松添加)
网络复制:
(目前不支持)。省流,如果玩家1拿着杯子,则玩家2是看不见的(悲)。
支持的开发平台:
Windows:(支持) Mac:(支持) Linux:没有,谁特么会用Linux玩游戏啊。

fragment 碎片
第一章 常见问题
1.1 名字过长
一般而言,如果你是ue5.1/5.2的编辑器一般打开都会弹出两个弹窗

会看见什么项目名字过长什么什么的,这没关系,本事就是用来给我们参考的工程project,最终我们还是会把功能移植到自己的项目中,所以直接无视即可,你要实在是看着不舒服那自己去修改下好了。
1.2 缺失项目设置

这个也莫得关系,并不是什么对渲染和画面有要求的项目,所以可以不用去管它。会出现这种情况一般是你默认启用的是Dx12,也就是你是Nvidia的RTX卡

如果要开启虚影阴影,那我们就启动SM6即可,但我不建议在学习工程中搞这些,因为太耗费算力和时间。虚拟阴影一般会在lumens中使用。

2,E键控制actor对象的 拾取and丢弃
3,YouTube搜索它
4,压力板对象
5,E键交互,他写了个门的例子
第二章 大致结构浏览
2.1 content目录

可以看见该工程,是常见的标准文件分类排版,贴图/mesh等静态资产,蓝图,ui。
2.2 Blueprint 文件夹

connection目录:
是存放被连接对象,一般不做主动激活操作
input目录:
目前存着,开关等输入装置
Items目录:
一般可交互物品
Objects目录:
可掉落物品目录
Player目录:
主角类
Projectile目录:
子弹类
2.3 core文件夹

core文件夹内,放了个蓝图接口,枚举类型,和一个游戏模式。
2.4 蓝图接口
蓝图接口

Sync Input State:
同步状态时触发
Break item:
物体破裂时触发
Remove Update:
释放检测时触发
Equip Item:
装备item时触发
Un Slot Item:
不晓得
Slot Item:
吸附item时触发
Drop Item:
目前不晓得
Pick Up Item:
捡起物品时触发
Interact With:
用来检测是否为,可交互物品时,调用
2.5 枚举

枚举可以更清晰逻辑内容。
作者告诉我们,如果后期要添加新类型的物品,需要在此处填写上新的枚举值逻辑。例如:消耗性物品。

2.6 Blueprint --> Input文件夹

input文件夹以输入信号为主,如按钮,压力板,slot。
2.7 Blueprint --> Connection文件夹

一般接受信号接受对象,如门什么的这种。
2.8 Blueprint --> Objects文件夹

这文件夹作者写了几个破坏物,具体意义不明。。。
2.9 UI 文件夹

UI就是UI。
门
connection对象是最基本的interact对象,例如
门是一个connection,灯条是一个connection,他们都能响应input文件夹内的3个输入对象


2.3.2 两个关键数组
我们有两个关键的数组,它决定了物体与物体之间的交互联系。

1,connection 连接数组
它用来存储我们需要激活的对象
2,同步状态数组
用于共享当前自身的状态给对方。
我们可以先看
Synced Inputs展台

左按钮input synchronize 数组存着右边的,右边的存着左边的

connecting对象为我们展台上的灯条

未激活时的状态

激活其中任何一个按钮,我们可以看见都被赋予了相同状态

可以看见,我无论是激活A还是B按钮,他们都会被赋予一个相同的状态。按下,或者弹起。这就是input sync数组的作用。
所以我们可以得知

数组内的对象都会记录同一个状态。
请注意,如果你启用intercat with事件,那么将会为对象开启按E键的交互操作

2.4 item对象

在items文件夹中,有两个重要的actor类,“BP_Item”And"BP_Item_Breakable(可被破坏对象)"。他们在items》master文件夹内,作为父类。
BP_Item_Breakable:
它的作用是,用来给物体执行可被破坏这么一个逻辑。
在他的构造脚本中,我们有一个fragment数组,用来存储碎片
第三章 快速上手--展台示例
Some Doors展台

双开滑动门

我还以为是什么呢,就是整了两瓣门,各自一边移动。

驱动方式,时间轴控制插值,赋值给对象位置属性。
单开侧门

这个就更简单了,直接绕Z轴旋转就ok了

0-90°
滑动门

直接复制一份BP_Connection_SlidingDoor,然后替换模型。

注意观察,两个插槽在世界中的位置,距离自己设置

把自身引用给压力板,就完成了对象之间的连接

效果如下

如果想控制开关快慢

可以通过设置timeline的播放速度
Input Slot展台

方块吸附插槽


将填入数组的类生成的对象,拖动至亮光处,插槽会自动吸附。

自动吸附,再次按E键,可以取出。

connect the pipes也同理

吸附和物体大小无关,哪怕是颗树也照样能吸附上去

Items和Breakable展台

杯子例子

可以看见,在他的fragment数组中已经提前存好了碎片,这样破裂的时候,就会销毁掉原本的actor,然后在世界中生成这些碎片
Destructible Foliage展台

展示了可被破坏的物体,和破坏完后掉落额外的物体。

自身碎片和额外掉落都是你自己定义的

drops数组额外的掉落物,可以是可破坏的,也可以是item类的
fragment,自身碎片数组。
第四章 蓝图简易分析
如果你想要改变观测距离

你可以自己修改holding distance的距离,比如使用鼠标滚轮,或者UI添加修改数组。
沙漠之鹰-手枪

继承了item,写了个开火逻辑。

由主角调用
稿子蓝图

稿子多了个碰撞和,和破坏接口,手枪那个也一样,不过是写在子弹里的。
2.2 主角蓝图

进来先看下我们的主角被写了什么
2.2.1 PhysicalHandle(物理抓取件)
说实话我真的不喜欢handle这个词

该组件需要自己去额外研究,我没有怎么用过,但他是整个project中演示物品的重要一环。会让其被抓取的物件,具备物理特征,比如带有速度,冲击力等。
2.2.2 right hand组件

它用来干么呢?

当然是,用来装备武器时的卡槽。告诉稿子应该附加在这个地方
2.2.3 事件开始运行时
2.2.3.1 hud上加了个widget控件,然后添加到了屏幕上,就是你看到的圆形准星。

2.2.3.2 事件tick(帧更新)
Cast Ray Function(射线追踪)

射线追踪不多bb了,基操,我们看后面两个
hand world location

用于right hand组件当前在世界中的位置
Interact Distance 与物品的交互距离,也即是射线的末端位置

End Ray Rotation

通过相机的向前向量+1000距离,在通过find lookat rotation来将射线末端的物体,旋转至我们面前。

这块作用主要是控制着,手里拿着的物品一直朝着主角的一个方向的旋转
Right Hand Rotation

主要控制物体离我们的远近距离的一个旋转
2,Holding Distance

用来设置相机和物体之间的距离


最终位置= world postin + (forward vector * Holding Distance)
