小黑盒
游戏玩家的必备应用
立即下载
扫码下载小黑盒APP
发现游戏 分享快乐
教练,我想学UE5!——02初识蓝图(上)


开始你的游戏!

在主界面,只要我们点击“运行”,就可以进行你游戏模板的测试,现在,点击运行,测试一下模板游戏跑起来的感觉!默认WASD加上鼠标移动,空格键跳跃,一定要感受清楚这些平日里我们玩大多数游戏的设置,因为这对你之后的学习很有帮助!

点击“运行”便开始测试你的游戏,旁边的平台按钮是用来打包的,之后我会再介绍。

好了,当你感受完之后,希望你能收收心,开始接下来的学习,本章课程我会带你了解,为什么你按下w人物会前进,移动鼠标视角会转动,这些都接触到一样对于UE4来说非常重要的东西——蓝图

注:很多人会说不要学习UE4蓝图之类的,或者对蓝图有轻视蔑视,实际上完全没必要这样。工具有好有坏,如果只是搭建比较简单的程序,那么蓝图能够解决的,直接在引擎内搭建蓝图就可以了,没有必要自己重新构思程序,又要优化算法。因为蓝图本身就是封装好的程序,直接使用是完全没有问题的。

当然过于复杂的程序还是不要使用蓝图写,因为这样会让程序变得非常臃肿,难以优化,有能力者建议学习C++,但是在虚幻引擎内,我们也不能放弃蓝图的学习,毕竟这是官方硬点的程序工具之一,说不定以后还会有大改进。

最近工作忙,距离我上次更新应该还是在上次。(划掉)



控制人物的核心——人物蓝图

如何打开你的人物蓝图

在虚幻5里面,有非常多的方式打开你的人物蓝图,为了避免新手错乱,我只教一种方法,就是直接从资源管理器里面打开。

BP是Blueprint的简称,也就是蓝图的简写

打开资源管理器,复习一下,这个界面要按ctrl+空格,或者是点击最左下角的按钮就可以打开,这里有几个文件夹,这些都是构造起这个第三人称地图的资源(或者叫资产)。

让我们点击ThirdPersonBP,进入存放第三人称蓝图的文件夹,然后我们可以看到里面有三样文件,第一个文件里面便是存放了我们待会要打开的第三人称人物蓝图,第二个则是地图关卡蓝图,第三个则是官方的教学Overview。


点击Blueprints


这就找到了我们刚刚所控制的小白人蓝图

让我们打开小白人蓝图,这个虚幻的小人物会陪伴我们很久,让我们继续下去吧!

人物角色的移动是最基础的东西,也是最麻烦的东西,因为移动就意味着可以作为一个游戏的体验核心,例如超级玛丽,蔚蓝等平台跳跃游戏,或者是死亡搁浅这样的第三人称大型游戏(送快递模拟器)其游戏的核心就是操控角色本身的移动达到游戏目的。


当打开了蓝图之后,我们进入的现在这个界面,就是小白人的蓝图了,从视窗页面上看,我们现在所在的位置,是构造蓝图的位置。

刚刚进入蓝图,我们可能会进入到构造函数的页面

也有可能有些人开始界面会在视口,这里是用来操控蓝图内组成的视窗

让我们点击上面的“事件图标”页面,进入蓝图的正式编辑区域!

点击事件图标

老规矩,在制作东西之前,我们要了解一下整个蓝图界面,放心,这不会很长。

在蓝图界面的分区

蓝图包含组件:在这里,我们可以直观看到我们这个蓝图里面包含了什么样的物件,有什么样的东西,我们也可以在这里点击不同的物体,并且在“细节”窗口设置对应的属性。

变量与函数区:这里存放着你构造的变量和构造的函数,注意这里存放的是蓝图的全局变量,在进入函数之后,你可以构造函数内的局部变量,局部变量仅可以在函数内使用,且函数可以使用全局变量。

蓝图编辑区:在这里,你可以长按左键空白处拖动蓝图四处查看,或者滑轮滚动放大缩小蓝图,右键可以创建蓝图,基本上这里是逻辑区的核心。

细节属性窗口:这里可以调整蓝图组件内部的性质,或者进行蓝图本身的性质设置。


蓝图的逻辑

首先在我们了解游戏人物如何移动之前,我们要了解你按下按键之后计算机发生了什么样的逻辑变动。之后我们讲述的一切东西,都会在写蓝图之前进行逻辑分析,否则你写出来的蓝图就像是没有大纲的小说,前一秒还在新手村,下一秒已经征服世界迎娶白富美。

就算是写小说也得有故事逻辑不是?所以在编写之前,我们要列举自己的逻辑,让自己的逻辑变得清晰,至少让自己说得过去

不鬼扯了,让我们看看你在按下W这个按键之后调用的事情:

按下W之后角色的简单逻辑

是不是觉得很啰嗦?没错,计算机可不懂得你说的是什么鬼东西,他只认写出来的玩意,所以你必须要把你想到的每一步精细的东西都列出来,它才能按照你的步骤一点点做,无论你是用什么代码编程对应的引擎,哪怕是蓝图也好,都是一样的繁琐,除非你把计算机物理锤爆,否则计算机它不会出问题,出问题的只会是你的代码。

其实这还是最简单粗暴的大纲,我们在这个大纲上再细化一点点,就成为我们现在这个人物蓝图的逻辑了:

稍微细化一点点

这是最简单的移动逻辑蓝图,移动基本上都逃不开这几个步骤,但是要细分起来,在各个引擎各个厂家之间都完全不一样。譬如在动画播放上,我们目前采用的是制作混合空间的方式,而像育碧这种大厂,采用的是动作机(Motion Matching)动作匹配技术,我们看到震撼人心的《黑神话:悟空》采用的也是这种技术。

当然,我们在此并不深究,只展示本次显示蓝图的逻辑,否则有卖弄之嫌。

混合空间技术:通过混合空间来混合两种完全不同的动画,利用计算机自动混合骨骼来达到混合动作的目的,通过调整曲线可以简单的制作出较为流畅的动画,但是由于是程序生成,因此存在一定的生硬部分,也是市面上较为流行的一种动画混合方法。优点是所需动画数量少,成本低,技术成熟。

动作机(MotionMatching)技术最早是2002年提出,2016年育碧的《荣耀战魂》算是第一个采用这种方式制作的大型动作游戏,它的特点是有及其流畅的动画和自然的过度,本身通过预判角色的动作,立刻播放角色的对应动画播片,同时通过惯性化耦合上下播片使得动画流畅。缺点是需要大量的动作动画,需要动作捕捉,并且占用大量内存,挤兑画质空间。不过占用内存方面据说育碧通过训练AI来预判角色动作,有效降低了角色蓝图占用的内存,似乎从占用400多M降低到了10多M,所以最大的缺点还是角色需求动作多,需要精细的动作捕捉,不适合独立制作者。

此处参考知乎文章:《Motion Matching 的介绍》https://zhuanlan.zhihu.com/p/50141261


输入轴与蓝图细节

介绍完了窗口布局和逻辑,现在可能你对界面有所了解,但还是对这些已经写出来的蓝图一脸懵逼。

这写得都是啥啥啥?

让我们分开来,一点一点进行讲解:

手柄控制蓝图

GamepadInput:从名字上,我们就可以了解到,这玩意就是手柄的控制蓝图,实际上这里是手柄控制视角上下左右的蓝图。

从这个进行教学,我们首先要知道,红色的我们通常叫事件蓝图,后面蓝色的实际上都是封装函数蓝图,绿色的则是纯函数蓝图,而BaseLookUpRate以及BaseTurnRate则是变量,中间的乘以相信我不用多说。

一般情况下,我们看蓝图时,要从红色的蓝图看起,再往后看接下去的函数。

所以这个函数的作用是:当检测到输入轴运动时,就会将轴的运动乘以轴的运动速率(BaseLookUpRate或者BaseTurnRate)随后输入到封装函数的控制器“添加控制器Pitch(Yaw)输入”中,完成手柄对于摄像机观察视角上下左右的变化这个动作。

那么很多人或许就很疑惑,这个输入轴蓝图,也就是逻辑上的输入事件是怎么来的呢?


让我们最小化蓝图,点击主界面右上角的“项目设置”按钮。

打开项目设置

在项目设置处,我们注意左边的一列索引,在这其中找到“输入”并点进去。

点击输入设置

看向左边的那些设置,我们就能够看到一些熟悉的英文LookUpRate与TurnRate,这里就是设置对应“轴映射”的地方。

设置轴映射的地方

可能看到的你还是会疑惑,还想问为什么能够控制视角,我们就以下面LookUpRate为例子,讲解为什么轴映射能够触发轴映射蓝图事件。

首先,我们在LookUpRate的下面可以看到“游戏手柄右摇杆Y轴”,以及“1.0”,这是在游戏系统中进行的检测,一旦检测到你使用了游戏右摇杆,那么游戏封装系统就会自动开始检测你的手柄是否有在Y轴上的移动。

当检测到有Y轴上的运动时,就会立刻触发事件,并且会返回一个移动了多少的值。这个值将会乘以后面的缩放,返回到调用LookUpRate这个事件中,玩家可以立刻调用这个值,来确定手柄移动了多少,这样就完成了在轴映射上的调用。

操作映射比起轴映射就简单多了,他能够检测你是否按下了某个键,比如是否按下了F进入坦克(雾),一旦按下,他的事件就会立刻响应Presssed(按压)事件,当你松开,就会立刻响应Released(释放)事件。

比方说我们能够看到,上面有个“JUMP”事件,对应的操作映射是“空格键”

那么我们就能够理解以下的JUMP蓝图:

Jump蓝图

在我们按下空格时,操作响应触发Jump的Presssed(按压)事件:跳跃,而在我们松开空格时,触发Jump的Released(释放)事件:停止跳跃。

跳跃和停止跳跃都是封装函数,调整跳跃高度可以在CharMoveComp的“细节”里面进行调整。

鼠标输入事件

如果你理解了上面的游戏摇杆触发事件,那么你也就理解了关于鼠标的输入轴事件,这里只是将原本的“摇杆输入”变成了“鼠标输入”而已,甚至比起摇杆输入还要简单——因为它没有控制鼠标灵敏度的变量。

以LoopUp为例,里面检测了鼠标在Y轴上的移动,一旦鼠标在Y轴上移动了,那么就会乘以一个-1以后,在这个蓝图的“Axi Value”这一栏输出,只要直接连接到封装函数上就可以了。

注:以下两个分别是触控板的蓝图和VR的蓝图,本文更多注重PC键鼠的操作,因此不多讲解,可以直接将其删除,不会对你弄的这个游戏有任何影响。

触控板控制跳跃蓝图

VR定向蓝图


在花五分钟完全了解了输入轴之后,我们就继续往下讲了,接下来我们还是会用到输入轴事件蓝图,只不过和刚刚的不同,这里的输入轴事件变成了输入WASD按键。

移动控制蓝图

这里的轴输入设置就非常有趣,首先这里只有两个轴的输入,但是我们都知道,前后左右是有四个按键的,那么要想响应前后左右四个按键,却只用两个输入设置,那要怎么样才能控制呢?

没错,就是乘个负号啦!

在输入设置中,我们可以看到w输入缩放是1,而s的缩放是-1

当我们按下W的时候,输入轴MoveFordward响应,对应输出的值为1输入到封装蓝图“添加移动输入”的ScaleValue变量里面,这个变量就会乘以对应的移动向前向量,如果是1那么毫无疑问这个封装函数会执行让角色以MaxMoveSpeed为最大移动速度向前,而如果按下S,对应值就成了-1,对应方向就会相反,让其朝着向后的方向以MaxMoveSpeed为最大移动速度向后。

了解了这一点之后,你就可以同理了解下面的MoveRight输入事件所带来的函数。

这里解释一下为何只要Z轴的方向,我们在UE5的3D方向体系中,X轴代表的是前后方向的旋转,Y轴代表的是左右方向的旋转,Z轴代表的是垂直方向的旋转,而我们的移动设计在一个平面上,因此只需要获取Z轴方向的旋转,你也可以尝试一下连其他的几根线,只要你确保你不被晃得早餐吐出来。

我们在下一节将开始讲述对应的动画蓝图,至于啥时候更新嘛,看我啥时候工作不忙了。




UE5在目前看来还不是成熟的商业工具,光是他频繁的闪退都是非常大的一个问题,因此我建议各位在学习蓝图的时候,使用更为稳定的UE4而不是UE5。同时,我在这里也会给大家关于虚幻引擎的学习视频,从入门到初学者阶段适用:

【虚幻4】UE4初学者系列教程合集-全中文新手入门教程

#神来之作第九期#佛系平台爱好者#epic爱好者#

展开阅读全文
打开小黑盒,查看更多精彩内容
评论区
打开小黑盒,查看更多精彩评论