UE5 基础应用 —— 09 - 展示类小项目

一、展示类小项目

1.1 基本设置
1.1.1 准备工作

因为是展示类项目,项目设置中要做如下调整。

我们可以根据需求选择是否勾选 Nanite。它的核心作用就是:

  • 能够实时渲染 极高面数的模型(数百万甚至上亿个多边形)。

  • 自动根据屏幕空间做 LOD(Level of Detail)管理,开发者不需要再手动制作多级 LOD。

  • 提高效率:即使模型面数超高,也能保证性能,因为 Nanite 只渲染屏幕上真正可见的部分。

创建后期处理体积,勾选 Infinite Extent,【全局光照】/【反射】- 勾选 Lumen。

1.1.2 GameMode 设置
1.1.3 控制角色移动(键盘)

因为 Pawn 蓝图类没有 Character Movement 组件,所以无法像之前 Character 蓝图类一样简单的使用 Add Movement Input 节点,下面只介绍最简单的方法啦。

1.1.4 控制角色移动(鼠标)

原理同上。

鼠标中键按下时,Axis Value 为 1,这里就只介绍最简单的方法啦:

1.1.5 控制镜头旋转

因为我们还想做复位功能,所以我们就不用 Add Controller *** Input节点了。

1.1.6 控制镜头缩放

我们使用蓝图自带的 Mouse Wheel Axis 节点,鼠标滚轮向前 / 后滑动会生成不同的值,以此来控制弹簧臂的长度。

但经测试缩放效果不太平滑,所以我们使用下面的方法。

FInterp To 节点可以理解为:每帧把当前值往目标值"靠一点儿",返回新的当前值。

其中,每帧移动的量等于 [(Target - Current) × Clamp(DeltaTime * InterpSpeed, 0,1) ]

因为每帧都按剩余差值的一定比例移动,整个过程看起来像指数衰减(越接近目标移动越慢),所以很平滑、不突兀。

1.2 UI 设计
1.2.1 按钮模板

将想要调整的属性 创建变量并设置为可编辑实例。同时,这里我把这四个变量的类别设置为 info,目的是左边变量这一栏看起来更清晰。

【重点】 也就是说我们在创建按钮时,想把某个属性设置为可编辑实例 生成时公开 ,没必要想那么多弯弯绕,只需要创建变量然后勾选可编辑实例 生成时公开即可。

然后我们就可以在 MainWidget 中设计不同的按钮啦,这里我们还使用了 Spacer 控件。

1.2.2 设计顶部按钮功能

按钮一 ------ 设置菜单

按钮二 ------ 复位

按钮三 ------ 退出游戏

按钮四 ------ 功能栏

最后进行调用即可。

1.2.3 设计右部菜单

重新回顾一下我们以前的知识,这里我使用循环的方式动态创建。

同时播放我们创建的动画(创建动画过程略)。

1.2.4 设计右部按钮功能

按钮一 ------ 视频播放

首先创建材质。

将材质赋予图片。

让 WBP_Media 创建时播放视频,且能控制视频播放暂停。这里我们使用的 鼠标进入/离开函数 是在 函数重载 里面的。

同时还要播放声音,Media Sound 组件添加到哪里都行,这里我添加到 BP_Pawn 中。

最后在 WBP_Button 中创建按钮点击函数,创建 WBP_Media 并添加到视口。

按钮二 ------ 引擎透明

Normalize(归一化)

  • 输入是世界坐标(一个向量)。

  • 也就是说,每个像素的世界坐标会被转成一个方向向量。

Dot(点乘)

  • 点乘公式:Dot(A, B) = |A| × |B| × cosθ

  • 因为 A 被 Normalize 过,长度是 1,B 是 (1,0,0),也长度为 1,所以点乘结果就是 cos θ。

  • 也就是说,输出值代表 世界位置方向 和 X 轴方向的夹角余弦。(cos 0° = 1,cos 180° = -1)

首先制作左边透明右边不透明效果。

下面结果需要连接到透明度上,下方只是做演示。

下面制作光圈效果。

下面结果需要连接到自发光上,下方只是做演示。

最终效果实现。

我们可以还使用材质函数,如下所示。

我们在 3d 模型的材质编辑器上添加这个材质函数。

【补充】我们上述的材质函数实现的效果是当 3d 模型在(0,0,0)点时左边透明右边不透明,如果想更改坐标位置,可以让 绝对世界位置 减 更改的坐标位置 即可。

1.3 游戏开始前小动画

【编辑】-【项目设置】-【项目】-【影片】- 将想要播放的影片进行导入。

二、移动端(待完善)

1.1 控制 ** 旋转

经测试,虽然 Camera 是 Pawn 的子级,但 Camera 并不会随着 Pawn 的旋转而旋转(和移动不同),貌似 Camera 旋转有自己的函数。

使用 Set Actor Rotation 节点。

  • 移动端的 X 轴即左右旋转,对应 Yaw
  • 移动端的 Y 轴即上下旋转,对应 Pitch

使用 Add Actor Local Rotation 节点。

【个人理解】如果我们想让 Actor 旋转,首先我们要在角色蓝图中获取 Actor 的引用(什么时候我们应该获取呢?可以在 BP_Actor 中凭借点击事件间接赋予)。然后通过合法性判断,如果是Actor,就走物体旋转逻辑。如果不是,就走镜头旋转逻辑。PC 端和移动端我觉得大差不差。

相关推荐
m0_552200824 小时前
《UE5_C++多人TPS完整教程》学习笔记50 ——《P51 多人游戏中的俯仰角(Pitch in Multiplayer)》
c++·游戏·ue5
vonlycn4 小时前
UE5 性能优化(1) 模型合并,材质合并
ue5·材质
ue星空1 天前
月2期学习笔记
学习·游戏·ue5
曼巴UE52 天前
UE5 制作游戏框架的部分经验积累(持续更新)
游戏·ue5
CandyU22 天前
UE5 基础应用 —— 10 - 控制台命令
ue5
平行云5 天前
Paraverse平行云实时云渲染助力第82届威尼斯电影节XR沉浸式体验
unity·云原生·ue5·xr·实时云渲染
一眼万里*e5 天前
用ai写了个UE5插件
c++·ue5
成都渲染101云渲染66666 天前
电脑配置不足怎么办,告别硬件束缚,川翔云电脑
ue5·电脑
m0_552200826 天前
《UE5_C++多人TPS完整教程》学习笔记47 ——《P48 瞄准行走(Aim Walking)》
c++·游戏·ue5