UE5.2《传送门-Creating Portal To Another Reality》教程

开篇先导:
本教程为,UE5.2 商城每月免费资产《Creating Portal To Another Reality》所作的中文技术指导简单教程。
因为缺少中文的教程,所以顺手做了一期,需要配合up的视频教程一期使用效果更加。
已经和作者本人联系授权,下面是传送门作者本人的youtube地址和资产链接,大家如果喜欢可以直接去支持关注他。
作者的YouTube账号:https://www.youtube.com/@Zegi/featured

Update: https://www.youtube.com/watch?v=-d4uzt4YSvI
Documentation: https://docs.google.com/document/d/1dr241IMqIYZj3I0w0Q4lYjo-_wm8Lvnk47xL7YEgSLI/edit?usp=sharing
0. 该资产的特征
1. 快速入门 quick start
2. 材质演示 demo material
3. 添加大于3个unique portal
4. See事件
5. 传送门的激活方法
6. 如果角色移动过快或FPS过低
7. 多个复杂的actor碰撞处理
8. 光源或则其他类型的actor
9. 后期处理volume
10. Grab objects
11. 植被碰撞 Foliage Collision
12. 第三人称视角
13. 生成portal
14. 更改portal的形状
15. Portal的有效距离(以及可能在距离上出现的问题的解决方案)
16. 将Portal附加到相机上
17. VR(不演示和教程制作,无VR设备)
18. Oculus Quest
19. 联系我们
20. 已知的漏洞和未来的更新
21. 不需要文档的补丁说明
22, 观众提出的问题

还没更新完,先上传存档下
0. 该资产的特征
0.1 不使用RenderTarget和PostProcess,只使用材质函数和蓝图。
0.2 如果玩家看到一个物体,就会产生碰撞。如果玩家看不见,就没有碰撞。
0.3 可以自定义通过Portal的物体, StaticMesh SkeletalMesh, Foliage Simply put, everything you can apply the material to。
0.4 Actors can also use the portal themselves without your participation.

0.5 多个传送门可以链接同一个世界,一个传送门内也可以包含另一个传送门,不同的传送门可以链接到不同的世界。


1. 快速入门 quick start
第一步就是添加我们的一个可以响应传送门效果的actor
我们如何添加一个新的static actor。该actor 用来供我们的portal使用呢?
1.1 我们先来到我们的bp文件内







提示,portal的标签必须与actor的标签匹配(portal+数字),以便正确地进行碰撞操作。如果你不需要修改碰撞,那么就不必在actor上设置标签。




细节:
反向(Inversion)复选框:
决定了物体最初在传送门Porta的哪一位面。如果你想要在传送门Porta的不同位面 观测 整个场景,那么MPC中的可见性选项将会很有帮助。
静态(static) 复选框:
只会影响抓取Grab事件,该事件位于第一人称角色FirstPersonCharacter中,创建它只是为了演示物体通过传送门时,该物体的变化状态。


2. Demo Material
在demo materials 的文件夹中,你能够发现static actor的模板材质实例。
对于dynamic actor 他也能穿过传送门portal,(与static actor相同,但是具有“穿过portal瞬间Transition”的块),以及用于环境的模板。
使用环境模板,您可以创建2个完全不同的material,它们将根据您相对于portal的位置显示。

,我们能看见3个材质模板

1:用于static actors 的模板
2:用于可以穿过传送门Porta的 动态actor的模板(与静态actor相同,但包含“在穿越传送门Porta时”的代码块)
3:用于environment的模板。
使用environment模板,我们可以创建出2个完全不同的材质,这些材质将根据你相对于传送门Porta的位置而显示。


如果我们要设置material分配给另一个传送门Porta,则必须修改Basic part中的“材质参数集”合。只需更改集合本身即可。参数名称将自动分配。

如果我们要分配material材质给别的传送门,那就必须要先修改basic part中的材质参数集合。 只需要更改集合本身就足够了,参数名称他自动会分配。

3. 添加大于3个各自独立的portal
如果我们想要添加大于3个unique portal,每个传送门都通往不同的世界,那我们需要进行以下几个步骤:
复制文件夹DemoMaterials中的,”材质参数集合“文件(无需更改内容)。直接CV
在BP_Portal中,编辑PortalTag变量的范围。

3.在BP_Portal文件的三个位置复制代码(需要复制的位置已用绿色区域标记)。

只需复制BP_Portal中已有的内容,并将MPC更改为你在第一步中创建的内容。 例如,在编号为1的块中添加第4个传送门将如下所示。
5. 创建material并在需要时标记角色。
4. See事件
关于"See event"。
它允许你决定玩家通过传送门时,看见物体时触发的事件。但是这个事件可能会对性能产生负面影响。
See event是在持续工作的,当subject状态发生变化时就会被subject自身所调用。这是通过射线追踪完成的。当玩家通过传送门时便会触发过渡。
"Transition event"在玩家穿过Portal时触发。

在99.9%的情况下,你不需要考虑"Transition event",因为"see event"可以做相同的事情,但更高效。但是,如果你想进行性能上的优化,那可以放弃使用"see event"。 这些接口是在BP_Portal内调用的。
具体请看 :“Player Transition”和“Changes in visibility through the portal. Shutdown can greatly improve productivity”这两个代码块





相反,我们可以使用Transition事件。 当可见性改变时,See事件会触发。你可以在子类actor中扩展它。

默认情况下,仅触发碰撞切换。
您可以使用RealVisibility(真实可见性)变量来确定actor的状态。
如果在您的游戏中玩家可以拾取物品并通过传送门携带它们,我建议在RealVisibility变量变为False时添加自动解除附着的物体。
我没有将它添加到demo level中,因为我喜欢将物品管理在门户的隐形侧面。但这可能导致非常奇怪的结果,而且很难让所有玩家理解发生了什么
5. active portal
你可以同时激活具有不同标签的无限数量的传送门。



为了优化性能,我建议禁用远离玩家的portal。要做到这一点,只需将“Enable”变量更改为False。
6. 如果角色移动过快或FPS过低
6.1 但是,如果有多个具有相同标签的传送门,则同一时间只能激活其中1个。
激活此类传送门的最简单方法是通过EnablePortal(启用传送门)事件。
6.2 如果帧率过低,门户可能无法正常工作。
你可以通过增加BP_Portal中Box的宽度来解决这个问题。但最可靠的选择是连接BP_Portal中的2个红色块。


请注意,截图中的位置使用了角色的cast操作。不要忘记在那里放置你的角色。这是唯一一个在特定角色中使用cast的地方。
7. 组合的复杂actor碰撞处理
如果在你的actor类中有多个mesh,则你需要编辑构造脚本并添加一个通用碰撞体。

你可以使用ShapeComponent、BoxComponent或复杂的StaticMesh作为通用碰撞体。负责此功能的函数位于BP_Actor->CustomOverlap中。

1. 关于actor的静态,动态




8. 光源或则其他类型的actor
灯光和其他类型的角色 最简单的方法是更改已准备好的actor之一。

1,单选static,只在绿色的世界的发光


2,inversion与之同理
3,双选则是两边都存在


实现过程,




9 Volume(体积)
如果涉及到体积对象,可能会遇到困难,因为它们不能正常作为组件工作。解决方法可以是创建一个控制体积的角色。观看PostProcess的示例。




抓取物体
演示关卡使用了一种基本的抓取物体的方式。你可以在以下文件中查看其实现: PortalsAR\DemoCharacter\FirstPersonBP\Blueprints\Blueprints\FirstPersonCharacter 但你可以根据自己的喜好编写任何关于抓取物体的逻辑。
植被碰撞
如果想要更改植被的碰撞,需要为植被类分配一个组件,并激活portal。
然而,值得注意的是,只有当玩家穿越门户时,植被的碰撞才会生效。最简单的方法是观看一个短视频,了解工作原理。


第三人称视角
该资源未设计用于第三人称视角,但仍可以做一些修改。最简单的方法是在门户上启用相机锁定。第二个选项较为困难,视频展示了需要做的事情。结果可能看起来奇怪,但效果良好。观看角色从白色世界到绿色世界再返回的移动过程,没有错误。
SpawnPortal
在地图上放置第一个门户之前,应该已经放置了具有相同标签的门户,并且它应该是激活状态。放置门户后,必须使用EnablePortal事件。只有在具有相同标签的门户中最后放置的门户才能工作(视频末尾展示了解决此问题的方法)。



14. 更改portal的形状
我们可以将Portal制作成三角形或梯形,但需要稍微修改BP_Portal的代码。需要考虑socket的向量,而不是整个对象。



作者还建议在3D编辑器中为StaticMesh Plane_Portal更改为你的新形状,并对BP_Portal进行一些小的修改。
传送门工作的距离
在通过传送门观察物体时,你可能希望增加或减小物体产生反应的距离。
为此,你需要编辑传送门的每一侧。例如,
让我们看到"Up Side"这个代码块处(已添加:现在只需更改线宽!)
你必须要在两个地方上更改所选值。在BP_Portal和MF_Portal中进行修改。
如果您在原理传送门远时看到错误,请尝试增加"BP_Portal"和"MF_Portal"中的线宽(默认值为30000)。


Blueprints: 3 basic ones and 7 demonstration childBP.
Material function: 2.
Material parameter collection: 3.
1 basic material and many varieties of it for demonstration.
Interface: 1.
22 观众提出的问题:
