第一步肯定还是先安装epic,就不多说了;
在epic中按如下方式安装虚幻引擎
UE4==修改着色器的缓存路径==:
修改的文字:
InstalledDerivedDataBackendGraph # 这是搜索的值
%GAMEDIR%DerivedDataCache # 这是要修改成的内容的值(这就是将编译的着色器存放到当前项目工程文件中)
tips:
据说UE5新版本不用改,默认就是改了的
这个改了,添加的内容包所编译着色器就在对应项目的工程文件夹中:
==新(用这个)==:最好的修改方式,还是把上面值改成类似于这种:"D:/Epic/Shader_Cache/4_27_2/DerivedDataCache"
一些小技巧设置:
工程文件夹结构:
新建一个第一人称设计游戏,然后打开:
开始初学者内容包:
如果需要添加功能包,比如一开始创建项目时忘了添加初学者功能包就可以在这里添加:
ue4软件界面各个组成部件的讲解:这里
最开始上面截图是用的4.24版本,界面到4.25又有一些变化了,比较大的区别在这。现在改成最后一个ue4版本4.27.2。
好像这些单个按键时都不区分大小写
这里放一些快捷键操作说明图:
三维的笛卡尔坐标系:
说是3dmax导入时把坐标原点改成000(学名==枢轴点==),不然可能模型导入会偏移很远,不是很懂,地址放这。
youtube免费素材下载。
项目打包压缩时,可以把项目中的“Intermediate”、“Saved”这两个文件夹删了,一个是缓存文件,一个是自动保存文件,会很大的。
部分文件迁移:从一个项目中的部分素材迁移到另一个项目中:不写了,看这里。 # 用ue4自带的迁移,路径也有讲究,以后用到再来完善吧,路径很有讲究的,用到时要去看这个教程。
如果是网上下载的素材,如果有项目启动文件,最好也是先打开,使用迁移,实在不行,再复制粘贴,一般不要用复制粘贴,具体看这。复制粘贴时路径是有严格要求的,一定要看着来,熟悉后再完善这个笔记。
注:一般来说,把下载的文件的 Content 下的文件夹复制到 工程项目的 Content 文件夹里就好了
虚幻引擎有一些三维软件对应的插件,或者其它三维软件把模型导出成主流格式,再导入带ue4中,具体用到时看这个教程。
这是一些模型导出格式用途对比参考:
导入到虚幻引擎的模型被分为两个类:
静态网格体(一般是一些静态摆件,家具、房子这些)
骨架网格体(有动画的那种)
这是模型导入时的一些设置,用到时来看看先。
datasmith插件的使用。
介绍:
用途:
示例:做一个屋顶(讲解)
在模式中,选择 笔刷编辑,就可以对盒体进行各种编辑,(这只对BSP生效) Tips:
将我们用BSP做的房子打包:
总结:
Tips:
玻璃的编译反射采集,这里。
把一个人物添加进来,然后细节面板搜索 possess, 将禁用设置为玩家0,这样就可以操纵它了,忘了就来看这里。
一定注意:当地形很大的时候,设置右上角的相机速度,不然移动起来很慢
一样先ctrl+点击选中第一个点,然后可以连续点击多个点,设置一条公路的样子,(选ctrl选中末尾的点,在点击首部的点就会首尾连接起来)
然后选中样条进行如下操作:
Tips:
灰度图地形导入:
软件官网,直接搜索可能搜不到,要搜索 QuadSpinner | Home of Gaea ,此软件的一个简单文字教程; |
直接下载的就是社区免费版本,在导出时最大的分辨率只能小于1024×1024,不然就会带水印;
这也是弄地形的一个软件,也可以导出地形高度图。收费的,软件安装包在阿里云盘(里面有Crack方法),也是来自于B站视频,留个记录。
植被工具栏中的==套索==可以范围选中植被。
首先在模式中选择==植物==,在把石头、灌木这些材质添加到左侧去,默认都是会被选中使用的,然后视口界面里去点击就可以把植物刷上了(被选中的都会刷)
Tips:里面有几个常用选项:(点击植被图标后)
设置植被中如石头的碰撞:(这两个条件要同时满足才行)
记录个问题,我做的房子的玻璃不透光,后续看怎么去解决
系统自带的几个光源:
Tips:
做完了上面2.2后,把前面建的房子拉进来,房子内部可能是黑色的,解决办法:(说一个平行光,一个是天光,都改为可移动,如果还不行,就再做一下光照构建)
以上说一下,静态的话是不会对可移动物体有阴影的,改成可移动的可以直接看到效果,性能开销也就越大,静态的话改了就需要去构建光照。
==色温==:可以把light source的==色温==打开来调节色彩:
==自动曝光==:设置->项目设置->搜索自动曝光:这个开启后,就会比较真实的模拟进出隧道那种,一般就是开启。
==指数级高度雾==:就是让看远处的风景时有一些朦胧,让效果更佳真实,然后里面有两个参数,==雾密度==越大,越是看不清,但不够真实,要把==体积雾==开启,会更佳真实,开销也就更大,里面的散射分布指数也决定可见视角
这里面还有一个参数叫==消光范围==:就是雾很大时,通过这个参数来设定可见距离。
==实现光束和体积==,好难哦:这里。(两种方式,做光束效果)
==光束遮挡==:开启后,在一个物体的背光面看向光面,物体的周围就会很亮,没有被物体遮挡的地方,光纤就是正常的,比较真实,然后可以利用这,再把对应的==遮挡遮罩暗度==调大一些,光光束的效果就会比较明显了; 图里面还有一个参数是==光束泛光==:它开启后,看太阳周围是模糊的,不开,太阳就是一个很清晰的圆,不真实,这两个参数之间是互相影响的(下面这个不开泛光,就没啥效果): (缺点就是当摄像机移动到一定的角度才能看到这个效果,其它角度看不是这个光束的效果)
体积雾:通过体积雾和光中的==体积散射强度==来做,但是我咋改都没效果
以后可能还是用模型加材质来做光束的效果吧。
新建一个默认的关卡,点击Light Source,将其旋转设置成0、90、0;然后再点击Sky Sphere里面的Refresh Material刷新效果:(注意,如果选择了关联Light Source,在Light Source里做了修改后,一定要来到Sky Sphere里进行刷新才能看到效果)
设置里默认里面的一些参数,看名字就能看懂,也比较直观,如云的速速,云的不透明度等:如下
也可以不随Light Source(即上图框起来部分设置为==无==),进行一个自定义设置:(最后一个overall color可以决定所有颜色,全拉黑,就是晚上了),就可以做个一个篝火的效果。
注意这些设置,选择好地图游戏关卡,搞不好,运行打包的游戏,就是黑的:
然后还要安装VS2017的一些组件:看视频跟到安装吧。
弄好环境,记得上面选好关卡后,就开始打包:(打包开发版本成功了,如果后续来试一下发行版,也能打包成功的话,就打包发行版):
蓝图讲得一个大概有哪些的知乎文章。
一些概念的东西,用到了再来完善吧:
蓝图类之间的一个层级继承关系:Object->Actor->Pawn->Character # (其中Component是包含在actor中的)
actor其实和Pawn差不多,比较明显的区别就是Pawn比较方便我们去操纵角色,虚幻引擎为了更方便开发,就又继承出来一个Character类(里面就自带行走、跳跃这些,和Pawn中最大的区别就是蓝图里多了角色移动(CharMoveComp)这个组件,还有胶囊体组件这些);
在==pawn或者character中默认就是支持玩家输入的,但是在actor中是需要额外开启的==。这也跟他们的控制权有关, pawn和character都能够被角色控制,拥有控制权,但是actor不行,所以在前面的内容里就去开启了 启用输入、禁用输入 这些,然后pawn和character因为是有控制权的,就不要额外去开启了;
actor和对象之间比较大的区别就是actor是有组件的,而对象没有;
Actor->level blueprint actor,即关卡蓝图也是一个actor,并且是actor的子类。
添加门、给门设置一个碰撞: 从初学者包中添加一个名==SM_Door==的门,这种添加的静态网格提都是没有碰撞的,就要双击它,像上面写过给椅子添加碰撞一样,添加一个简单的盒体碰撞。细节面板中,将其设为==可移动性的==,因为要开门嘛。
在==基础==中添加==盒体触发器==(蓝图中叫collision,不一样,注意):(相当于一个感应装置),包裹在门周围
打开关卡蓝图:
在视口中选中盒体触发器,蓝图里为它添加两个事件,开始(进到范围)和离开(离开范围):
再是视口中选中门的对象,在蓝图里右键添加一个对门的引用,这个对象就代表着门,再从门里面拉一条旋转出来(z轴设置一个85度,那就可以旋转了):
这时已经可以开门了,但是开门就是一瞬间从0°到85°,很生硬,就需要通过添加时间轴来做动画效果:(蓝图右键,然后搜索==添加时间轴==,再双击它就可以打开时间轴的设置)添加一个浮点型时间轴,设置两个关键帧,(0s,0°)~(2s,85°)(用过右键添加,然后设置值)(也可以不去改时间轴的长度,点击选择使用最后一个关键帧。是一样的效果)
然后把时间轴跟事件、对象连接起来就好了:
Tips:
进一步:思考,这只是弄一扇门,要用千百扇门,就要写千百次嘛?
答:以上是直接把开门的逻辑写到了==关卡蓝图==里,不好,要将其写到一个Actor类中,即创建门的蓝图类。
self
回车,就有了对这整个蓝图类的对象应用==)(此外,还可以点击左上角的模型名字(如Door)把它拖进到这个事件图表界面)
Tips:关于整个Actor旋转、门相对旋转、门世界坐标旋转
总的事件图表:
解读:那么盒体触发器,检测到就不能直接是开关门,就要检测按键输入,所以:
enable input
#disable input
get player controller
Gate
(快速添加这个节点的话是:G+鼠标左键)
键盘 E
注意空格Filp Flop
: (前面gate的exit只能连接时间轴的的一个,那就需要这个节点)
首先把上图那个键盘E的输入改成Door门的OnClicked事件:
游戏运行的时候是看到鼠标的,就没办法用鼠标点击,就要把鼠标显示出来:(在总的关卡那里,打开==世界场景设置==) 默认的玩家控制器类没办法修改属性,就点加号生成一个新类,是继承于默认的玩家控制器类的
有个新的玩家控制器类,就去使用,并改属性:
注意:此时再去到00067
图界面,那里就不再是图上的值,而是上图的NewPlayerController类,然后此时再运行游戏时,整个界面都是有鼠标了。
但此种方式并不友好,因为整个全局都鼠标了,我们只希望去开门时鼠标显示出来,能点击开门,离开门范围时,鼠标消失,推荐用下面这种方式:
这里步骤就不细写了,跟前面按E开关门类似,主要是增加了一个更友好的控件,来改时间轴值的方式:
==插值==:lerp
(当Alpha为0时使用A的值,为1时使用B的值,中间变化就是使用插值)
使用:前面时间轴,设置第一帧和最后一阵时,时间数值都不改变,但对应的值都不再填动画要到达的具体的值,而是==第一帧写0,最后一帧写1==(暂时是用于就开始、结束两个状态两帧这种),然后lerp插值节点中就写开始、结束两个状态的值,动画就会按照这两个值之间线性变化,很均匀。
除了上面的浮点型,Lerp还有一些其它的类型:
Tips:
简单来说,这里的核心是==一个时间轴同时update控制两个物体的移动==:
同样是先创建模型:
时间轴还是设置两个关键帧,跟上面电梯一样,然后是用的lerp来改变值
重点是蓝图里的写法:
说明:
这个就两个重点:
Tips:
可以用获取当前目标的位置坐标、角度这些来取代直接输入lerp中A、B的值,一般也会用一个变量把初始值存起来,即便后续改变了,也能拿到最开始的初始值。使用变量:
变量直接拉出来就要像上面那种选择是设置变量值还是获取变量值,如果是按住alt拉出来,就是设置变量值;按住ctrl拉出来就是读取变量。
门基本还是按E开门的那个逻辑,区别是:按E后,就是进入分支了,这个分支由一个bool变量(这里就是是否有钥匙)控制,为true就去执行开门,没有就简单打印一各字符串:
GetAllActor
destroy
或弹出来选项最终总结:
事件:是系统自带的,默认就有的,比如盒体触发事件、碰撞检测事件等等,==好像是系统自己就会去执行的,不用我们去调用==;
自定义事件:吃饭生存是本能,然而去跳舞还是打游戏就是自定义事件,需要去调用才会触发,把蓝图里的一组行为用一个自定义事件结合起来,就方便外面的部件调用。 # 可以理解为自定义函数
==提升为变量==的意义,我就不写了,现在略懂了,后面忘记了就来看看这里吧。
蓝图接口才是蓝图间通讯常用的方式
视频地址。蓝图接口类中的事件好像就是C++的多态的一个纯虚函数,任何一个蓝图类都可以去添加这个蓝图接口(像是继承),然后每个蓝图类自己去具体实现这个事件要做什么,有的实现去开关门,有的实现去拾取武器,就是子类的各自实现一个纯虚函数的功能。 # 这个视频里还讲了射线检测,资源的一些东西,新东西还是比较多,比较实用。
下面开始做一个场地的加速盒子,即进到这个盒子,人物的运动速度变快,离开这块地方后,运动速度变回来,分析:(有用到自定义事件和类型转换,类型转换就想像是指定这个类型的物体才会触发,其它的就不会触发)
再在小白人的人物蓝图类里,新建一个==图表==(这个不重要,其实就是方便做个区分,它没啥实际意义,方便后续管理),然后里面添加一个自定义事件(custom event),再把角色拉进来(细节面板里有各种参数),设置它的最大行走速度(这个节点很多时候汉子搜不到,这里搜的是 max walk ,其它的行走属性就搜对应的 fly、swim这些):
针对上面的改进,注意:以上把最大行走速度改成了20000cm/s,是写死了,这些别的地方调用这个自定义事件(函数)就没办法传参,就不够灵活,所以要改成以下的形式:(下面这两张图对标的是上面的那两张图)
同样离开加速区域后,就打最大速度改回去,完整的就是:(好像暂时不会把初始值存为变量,只能手动设回为600)
简单在小白人的蓝图类里加一点,就可以实现按Shift加速,放开就正常:(这样无论哪个地图里的小白人都可以加速了) ==一定要有红色的这种事件作为一个触发开始==:
最简单先做一个,它放空间里就会自动旋转,就两个点:
新建一个蓝图类,auto_rotate_BP,然后添加一个默认事件==事件Tick
==,它会每帧去更新动画;然后是==add添加相对旋转==,每次增加一点,而不是用前面的set相对旋转:
重点:系统自带的事件==事件Tick==,它是会自己触发的,只要写进去就好了,然后它每帧去执行更新,达到了时间轴的功能。
进阶:按键盘来控制旋转
补充:以上一次只能选中一个让其进行旋转,改进的方法,通过获取所有类的actor,然后里面把类型选出来:(一定注意蓝色线的关系一定连线关联起来)(注意一定先把类型选出来,右边再去拉节点)
For Each Loop
,全部都执行这个自定义事件)(下面的Completed是循环完后去走的路线)
写在后面:最开始没看视频自己写的时候,是把旋转控制写到了关卡蓝图中,每次也是关联的一个示例,也能旋转,那样的话,关卡蓝图就不那么简洁了,应该也能用for循环让所有的都动。
简单来说,就是密室中有几个灯,这几个灯需要全部打开,机关门就会自动开启。(以下主要是灯的蓝图,这个灯的原型也是我从初学这内容包里继承的一个,)
在关卡蓝图中,写一个自定义事件“开启机关门”,主要就是写开门的动画:(注意点是要在这个机关门的细节面板中将其改为==可移动性==,不然编辑就会报错)
墙上六盏灯的,关于灯的蓝图如下:
上面的一点使用技巧:
ce 关卡蓝图中的自定义事件
(注意中间有个空格)就可以了。有两种方式:
第一种就是前面讲到过的,把人物拖进场景后,在细节面板里搜索==poss==,将其设置为玩家0。(这可以设置多个玩家)
第二种是添加==玩家出生点==,不用提前把人物模型拖进去:
注意:以上的框起来的游戏模式重载、默认pawn的值 还能是其它的,还可以是自定义的,但还不会,用的就是系统自带的默认的。 然后添加玩家出生点:
Tips:
把玩家出生点去掉,拖几个小白人进去(一般还是要默认设置一个角色的控制权),打开关卡蓝图,界面缩小,然后在世界大纲中把这几个角色选中,直接拖进关卡蓝图中,就可以获得这几个角色的引用;
添加“玩家控制器”,从中拉出对应的”控制”节点(输入possess快速找到),把它和角色关联起来;(这个节点只有玩家控制器里才有)
使用==MultiGat==顺序节点(M+鼠标左键点击快速获取),来控制角色控制权的切换,其中关于这个节点功能的讲解:
以上就实现了角色的控制。
上面镜头直接切换过去会有些突兀,可以==加一个切换动画==,按下按键时,镜头在一定时间后移动到新角色身上时再获得控制权:
使用新的节点:==使用混合设置视图目标==(注意这个只有在==获取玩家控制器==中才能被找到);还有==delay延迟==节点
以上有一个弊端,如果2s动画没做完就又按了键盘,这时就不稳定了,所以要创建一个bool变量配合branch分支进行判断:
完整蓝图放这里示意一下吧:
Tips:
第一步:小白人走到车边按键盘F,就将控制权切换到车
第二步:按F后,肯定也要把小白人移动到驾驶位置
总的蓝图示例:
视频地址,简单来说,就是点击载具的蓝图,自带的事件里有油门这些,然后设置油门来减速,这蓝图是简单说怎么设置载具的属性:
说明:长按shift进行冲刺、快速连按两次shift瞬移、多段跳:视频。
以上还不够完整,要摄像机有一个放大缩小的效果才能提现瞬移,通过设置fov(field of view),视野的大小来达到这个效果:
注:fov默认是90,正常的,自己去试验看大/小于90画面的大小变化,瞬移完肯定是回到正常90,前面的A的值就看要什么样的效果了。
多段跳:打开小白人的蓝图类后,在它右边的细节面板搜索“jump”,然后设置“跳跃最大数量”,想几段跳就几段跳。
AI人物能在导航网格体上自己移动,添加方式:“体积”–>“导航网格体边界体积”,它像BSP画刷一样,记得==一定要将其放置得和地面融合==,然后按==快捷键P==可以显示隐藏和这个绿色界面(不跟地面融合是不行的),如下图:
然后这个是静态的,如果我们后面在这个上面放了一堵墙,那AI是不知道的,是可以设置这个为动态的,即在运行时计算,更智能,开销也会更大,设置方式:“设置”–>“项目设置”–>“引擎”–>“导航网格体”–>“运行时生成”(最后这个可以去搜索),这个里面去改动态、静态就好了。
另外还可以让AI跟随一条指定的路线一定,不写了,看这个视频。
可看这节视频,它顺带可以复习自定义事件、事件这些咋用。
核心节点是 “AI MOVE TO”;先搞一个小白人的蓝图复制BP,把里面的所有事件、节点、乃至于相机都删了。
注意:AI只会在导航窗格范围内运动
设置成AI跟着玩家跑:
设置成AI在导航窗格里自己跑:
简单的功能,就写上面的AI蓝图类,实际更多的是用AI行为树。
这几个的添加方式如下图:
我们先做一个简单的demo,看到玩家打印true:
先在Aicontroller中,添加视力感知方式:
感知到了就打印true、反之打印false:
当然,在傀儡小白人的蓝图类里要把它跟AIcontroller联系起来才能控制,进到傀儡小白人蓝图类:
————-打印的demo就到此为止了,接着往后是和行为树、黑板练习起来,继续操作——
黑板里添加一个bool变量,叫“是否看到玩家”;
接着在AIcontroller中去设置这个bool变量:
接着是行为树与这些的联系:
行为树中为sequence添加任务:
最后一步:把AIcontroller和任务书结合起来:在AIcontroller中
为了让AI更加紧追我们的角色,不会一甩尾就不见了,要加一些设置,这就不写了,看视频。(但按视频那么改了有点问题,即便我们离开了AI,它也会一直看向我们,所以就将就上面那样了吧)
视频地址,导入模型时可以去看看这个视频。// 很重要,制作素材在百度网盘有。
先按照上述视频把模型导入,接下来直接将:(导入时有一个警告:此FBX场景中未发现平滑组信息。导出文件前必须在FBX导出器插件中启用“导出平滑组(Export Smoothing Groups)”选项。对不支持平滑组的工具而言,导出时FBX导出器仍将生成正确的平滑数据,从而在导入时推断出正确的顶点法线。 )
在上一节的基础上,不同的速度播放不同的动画。
右键空白处:“动画”–>“混合空间1D”,选择刚上一节导入空间模型的骨骼:
双击刚刚新建的混合1D,改个名字为my_speed,设置个最大值和划分的分区数:(可给插值时间来过渡动画)
接着添加动画的预览,默认是没有的,选中右下角的所有动画,“设置当前预览网格体”,之后鼠标放上去就能看到这个名字所代表的动画的预览:
再把这些动画拖到轴上指定位置,不行速度拖到150是自己定的,可随意:
注意:可以拽动上图的绿点(或者按住shift+移动鼠标)从左往右就能看到走路到跑步的过程,然后还可以把这绿点拉倒右边跑步的动画处,点击右下角的循环,就会一直播这绿点所在速度的跑步(没跑的话,再把循环点开,以及看一下绿点是不是在速度很慢的地方,看起来像静止了) 为了动画过渡看起来不那么僵硬,可以在左边的“my_speed”那边的面板的下面“采样差值”将“目标权重每秒插值速度”从0改成3,具体可以看情况调试。
添加动画蓝图:
设置角色默认行走速度与动画速度贴合(角色蓝图),按住shift加速:(一定要先选中移动组件啊,才会有移动速度这些设置)(这一步可不要,视情况可定,很多默认按W就会获得速度,也就是上面完成了就可播放动画了,加上下面这个就是相当于改变速度了就回播放对应速度的动画)
这一小节是新增的,可以和上面的混合空间一起使用。这下面(5.2.2、5.2.3、5.3.2)是B站的一个20集悟空动画系列教程,留一个地址。
注意上面除了用混合空间(这个动画之间有过渡,会好一点你把),另一种方式: 还可以在里面添加很多的状态机,然后状态机之间用逻辑控制,这个视频。把”Entry”看做函数入口,添加各种状态机,双击状态机,把要播放的动画拖进去,然后状态机之间的切换就是用逻辑控制:(知道这么一种方式,还是用混合空间吧,有切换过渡,但是这个混合空间不太好加逻辑判定,可以用下面这个方式,在动画蓝图的“事件图表”中写逻辑获取角色的速度、加速度这些,然后进行判断,满足条件就设置对应布尔变量,然后再在动画蓝图的“动画图表”中的状态机的“双击下图的双箭头符号”,进去用刚生成的布尔变量来进行控制。详见视频。)
使用这种来完成一个站立到奔跑:
省略了起那么角色模型的导入,跟5.1的步骤是一样的,然后还可以在角色蓝图中的视口,选择不一样的悟空的骨骼体,就达到了换肤,其它的功能都是通用的。
进到==动画蓝图==里创建一个名为“my_speed”的float变量,然后在“事件图表”中来获取角色的速度,并设置给变量:
注:上图为了更准确:应该把“获取速度”节点再分割一下(上图这样获得速度是x、y、z三个方向和的速度长度),只要x方向的长度,这样后续做jump的时候,不会原地按space也会跑了
在”动画图表”中右键添加一个状态机,然后双击状态机进去:然后把自己要播放的动画直接从右下角拖到界面去(就成了一个小的状态机),也可以在里面右键添加状态机,然后双击状态机进去,把自己要播放的动画拖进去连起来(这个效果和上个界面直接拖是一样的)。然后写自己的控制逻辑:
注意:很多时候可能会出现鬼畜的动画,就是一些动画要把默认的循环播放取消掉,特别是上面用到“获取相关剩余动画时间”的。上图需要:
==取消循环播放的方式==:比如上图双击“LevelStart”,进去后点击“播放LevelStart”,在其细节面板取消掉就好了。
在前面的基础上,加入跳的动作:
这一小节和5.2.2是同一个视频来源。
实现方式有两种:1、播放蒙太奇的方式,和下面跳舞一样,2、下蹲动画和5.2.2中那样做。
用播放蒙太奇,我只想说注意一点:在5.2.2的基础上,把蒙太奇的插槽插入状态机和输出结果之间就好了:
另外蹲的动作也是第三人称模板封装好了的(默认是关闭的),按以下方式去实现:
在==角色蓝图==里把“可蹲伏”打开,然后,设置按键来蹲伏(crouch):(设置好的,蹲伏时镜头会跟着动)
去==动画蓝图==的“事件图表”中弄一个蹲伏状态的布尔比变量,这也是第三人称模板有的:
去==动画蓝图==的“动画图表”添加这俩动画,并根据刚生成的布尔值设置条件:(只做了站立时的蹲)
注:
动画蒙太奇:就是把一个动画转成动画蒙太奇,(说是有很多slot,可以组合动画,还没试过),它最主要的是就是可以通过event事件去触发,比如按键。
这节也是接着上两小节(5.1、5.2.1这俩)继续的。实现按F跳舞
找到导入的动画序列中的跳舞,然后点击右键:“创建”–>“创建动画蒙太奇”。
双击打开刚创建的动画蒙太奇,为它创建一个插槽(就是起个名字标签,项目可能有很多不同的蒙太奇,就是通过插槽做区分),先从蒙太奇界面的“窗口”把“动画插槽管理器”勾选上,这样右下角的面板就有了;接着“添加插槽”,取一个自己的名字:
然在序列的左边使用我们的这个插槽,这样就有了名字上的区分,就可以关掉了:
打开==动画蓝图==,在动画图表中点击第一个父类,然后从 状态机 拉出一个 “插槽”,再单击这个插槽节点,右边细节面板替换成上一步的”my_dance”:(注意:此时角色的基础状态中是有其它动画逻辑的,再连接上蒙太奇的动画插槽,再输出)
在角色蓝图中实现按F跳舞:(也可再加功能,有速度时就停止蒙太奇的播放) 这里似乎还可以不要获取动画实例,直接按键就播放动画蒙太奇,节点不叫“蒙太奇播放”,而是“播放蒙太奇动画”,写这里吧,到时候看情况选择:(暂目前发现效果都一样)(可能也叫“播放动画”)
这是做孙悟空连招视频中看到的,视频地址。
先说一下,添加播放连招的蒙太奇,首先找到连招的montage,这里是“Primary_Melee_A_Slow_Montage”,点进去后看它的的组和插槽名字,记住:
接着去动画蓝图里的“动画图表”中,添加一个插槽:从状态机牵线出来,输入slot,添加后选中,在其细节面板选择上图记住的名字:
再去角色蓝图中写触发逻辑,按鼠标右键播放这个montage:
下面开始是通知事件:
简单来说,在蒙太奇中,可以添加通知(就相当于是函数名),动画放到这里时就会调用这个通知(函数名),然后在动画蓝图中就可以定义这个自定义通知(函数)的功能实现(就成为了自定义函数),动画播放到这时就会自动调用这个自定义事件。然后一般把具体的功能实现是写到角色蓝图中作为一个自定义事件,这时动画蓝图的这个事件通知只要直接调用角色蓝图的自定义事件就好了。
注(更新):悟空那个本身示例,在它的蒙太奇中有SaveAttack、ResetCombo通知事件,然后这这两个事件的直接调用是写到的 动画蓝图 的 事件图表
,在里面调用角色蓝图的自定义事件。下面是WuKong的一个连招的示例(当按照给的示例的角色蓝图复制一份,适口里面把人物的骨骼体换了后,也把动画蓝图换一份,用这份动画蓝图,里面去把对应的cast to 角色蓝图 对应改了):
都是在蒙太奇的通知轨道添加的。跟上面都是一个蒙太奇“Primary_Melee_A_Slow_Montage”
拖尾效果:(也算是粒子的一种,主要是轨迹)
上图这个细节面板还要设置武器的起点终点:在悟空的骨骼中找到金箍棒两端的名,并记住
粒子效果:基本同上,新建一个轨道(注:细节面板的 “插槽命名” 可以没有,粒子特效位置就不大好,这给到武器上的名字,效果就好很多)(搜索这个“P_Wukong_Future_ULT_CloneSpawn”名字,这效果不错)
接着5.3.1,这是在播放蒙太奇中过程中播放声音,通过5.3.1中添加notify的方式:(声音太吵,可以把触发几率从1.0改到0.5)
在蒙太奇的通知栏添加一个新轨道(这样声音一个轨道,自定义通知事件一个轨道,播放粒子一个轨道,比较好管理):
点击上图新建的这个playsound,然后在右上角的细节面板,选择要播放的声音:
注:这种cue就是把普通的几个音频文件用random的方式每次随机播放其中一个,不至于点击多次时一直是同一个声音很无聊,可能就是下面这种:
内容浏览器中右键在蓝图类中搜索,添加一个相机抖动类,这是写好的:
添加后点进这蓝图,细节面板设置参数,一般设置“震荡时长”(0.5吧)、“旋转振荡”的“Pitch”、“Yaw”,振幅5,频率10,作个参考
继续找到前面名为“Primary_Melee_A_Slow_Montage”的蒙太奇片段(可先自己随便点击一个动画右键建立一个蒙太奇,双击进去,右下角的资产浏览器就会看到所有动画和蒙太奇了),继续新增一个轨道,选择一个合适的位置,然后添加一个自定义事件通知:
接着去到==动画蓝图==的“事件图表”,右键输入“my_cameraShake”(就是上图我们轨道起的名字),添加这个通知事件;再右键添加玩家摄像机管理,并从中牵线出来一个节点(这样才是我们想要的),资产里也要选择第一步添加的相机抖动类:
这里是比较简单、熟悉后的打包,不明白的话去看前面笔记。
设置在玩游戏时能==按ESC退出游戏==:打开“蓝图”中的“打开关卡蓝图”,事件图表里面填加就行了:
接着是打包:在“设置”–>“项目设置”,中“地图和模式”,选择前面我们创建的游戏模式,游戏默认地图也选择第三人称,这里项目我们就只有这一个图,看实际情况来吧:
最后直接去打包就可以了。
视频地址。里面有完整的demo,在ue4里的操作就是前面5.1~5.4的操作,注意细节,千万别错了。官网。
这个视频这里还有讲到一点材质贴图的内容,放这里吧。
这个插件的用法:比如看到一个蝙蝠侠的模型很帅,但是不能用于商用,就可以把这个模型上传到Mixamo,用Mixamo自动生成这个骨骼,然后再导出导入到ue4里面,然后就可以让小白人用这个动画。所以就能实现让小白人用所有模型的动画。
注:一般进去先选择一个idle的静止动画,导出;再选一个奔跑的动画,导出;(也可以再加一个走的)。这样就在做动画时不同速度对应不同的模型。
然后新建的角色蓝图的内容都是从小白人蓝图类复制过去,把报错的删掉,留一些基本的,就好了。
视频地址。(动画重定向要骨骼相近的才能做)
这一小节不是那个初学者系列的,是另外的,就是悟空的没有下蹲的动作,要给他做一个下蹲的动作。
先到虚幻商城,搜索”动画初学者内容包(AnimStarterPack)”,里面有对应的一些动作,包括悟空没有的下蹲,添加到工程,然后:
UMG
注:这些button的细节面板都是有对应事件的,可以去添加按下时、松开时、悬浮时等等。
很多时候一些节点出不来,试一试英文以及把“情景关联”取消掉。
视频地址。
简单说:
先导入我们要显示的图片,然后资源窗口右键创建:“用户界面”–>“控件蓝图”,然后进去编辑,里面的框就代表屏幕的大小,从右边找到图像框拉进来,再在细节面板中设置锚点,全屏铺开。
接着在“关卡蓝图”:“事件开始运行”–>”create widget”(这里面的class类要选择上一步创建的空间蓝图)–>“add to viewport”(目标和前一个连接起来) 。
至此,一运行游戏,刚入的图片就会铺满整个界面。
==在界面制作按钮来开始游戏、暂停游戏、退出游戏==:视频地址。
这里面比较有用的界面的制作,跟qt是很像的,一个通用的是:“先添加一个垂直框,然后在这这个框架添加几个button,然后把button选中,细节面板中点击填充,就会把垂直框平均占满”。虽有垂直框大小位置改变,里面会跟着一起变,然后再设置底部填充值,来把每个button分开。
==添加富文本==:视频地址。在“控件蓝图”里的“多格式文本块”( rich text block)
直接有现成的节点:“设置游戏已暂停”(值设置为true直接游戏暂停),以及有让游戏直接退出的现成节点。
UI界面之间切换是可以做动画的,比如出现暂停界面的ui,游戏界面就模糊了,这个模糊也是慢慢模糊的,看视频讲解。
3D的UI显示与交互,视频地址。没咋看了,后续用到再说吧, 听到了 UMG
视频地址。可以创建session,然后别人find到session,然后一起进来。
存档系统,地址。
视频地址。此项目在虚幻商城中搜索”ArchViz” Explorer。是免费的。
这个视频具体地址这里,试讲怎么弄一个摄像机第一视角,然后还可以操控,以后可能会比较需要。
Play From Here(从此处开始): 也许有时需要从非玩家出生点的其他位置开始游戏。在编辑器视口中 单击右键,选择 Play From Here(从此处开始) 选项,即可实现该功能。
Bad Size(尺寸错误): 有时玩家出生点的控制器图标可能会变成一个 “BADsize” 字样的图标。出现此情况时,须在世界场景中移动玩家出生点,避免其与场景对象重叠。
希望静态网格体Actor受重力和碰撞影响,请在Actor的 细节(Details) 面板中启用 ==模拟物理==(Simulate Physics) 属性。(这样开始模拟后,物体就会落地,不会悬空)。
在 虚幻引擎 中预览游戏的两种方法:
在编辑器中模拟(Simulate In Editor) (SIE),你可以从 运行(Play)) 下拉菜单或使用Windows键盘快捷键上的 Alt + S访问它。
在编辑器中,运行和模拟之间的主要区别在于 运行 将始终在玩家出生点(Player Start)位置开始游戏,并让你控制玩家角色。模拟 不会移动摄像机,也不会产生玩家角色,且模拟状态是可以在视口内修改模型的位置、参数(但mobilty移动性为静态的不可以)。然后点击控制就去运行角色了,这时按暂停,就可以点跳过按钮,就是在逐帧debug。运行时再按 Alt+s 也会进到模拟模式。
以下为UE5文档中的:
PIE 控制台(PIE Console) 是游戏内控制台,你可以在其中输入命令,以便显示性能数据,启用和禁用虚幻引擎功能等等。
要打开PIE控制台,请在PIE模式下玩游戏时按 波浪号 (~)键。
再次按 波浪号 键展开控制台,第三次按 波浪号 会关闭它。
PIE控制台的行为与虚幻编辑器的主控制台相同。当你开始输入时,它会自动尝试完成你尝试输入的控制台命令。
分析项目性能是PIE控制台的不错用例。要了解更多信息,请参阅统计命令页面。
工具和编辑器:https://docs.unrealengine.com/5.1/zh-CN/tools-and-editors-in-unreal-engine/
自动重新导入(在外部程序中工作时,所有改动内容可以自动同步到虚幻引擎):https://docs.unrealengine.com/5.1/zh-CN/reimporting-assets-automatically-in-unreal-engine/
变换actor(还是有意义,还有一些相关的键盘快捷键):https://docs.unrealengine.com/5.1/zh-CN/transforming-actors-in-unreal-engine/
ue5中还可以点击actor的中心点,然后拖动将中心点移动位置,甚至是移动到actor外,还可以更改保存,上述地址有,ue4不可以这样。
不打开ue,以命令行运行未打包的游戏:https://docs.unrealengine.com/5.1/zh-CN/running-unreal-engine/
这里往下拉,有c++对应蓝图功能的一些代码:https://docs.unrealengine.com/5.1/zh-CN/unreal-engine-for-unity-developers/
术语表:https://docs.unrealengine.com/5.1/zh-CN/unreal-engine-glossary/