虚幻4游戏引擎学习记录1——灯火解谜开启祭坛上升效果实现(事件调度器,蓝图通信,关卡蓝图,全局变量,事件调用,设置场景偏移,线性颜色数组,事件逻辑简单编排)

本文是一个关于大学软件工程专业的学生利用课余时间学习游戏开发,并通过实践项目——一个基于《果宝特攻》灵感的互动关卡,展示了学习成果。项目包括门的提示交互、机关灯颜色切换以及上升台阶的控制,通过蓝图类编辑和关卡蓝图设置实现。文章详细介绍了每个环节的实现过程,包括组件添加、事件响应和玩家输入处理,反映出游戏开发中的问题解决和创新思维。
摘要由CSDN通过智能技术生成

        自从入学大学,感觉最大的特点就是有很多空闲的时间,自认为若是不入手做点什么简直就是在犯罪。

        见于专业是软件工程,又对游戏比较感兴趣,因此将目光放在了开发引擎(钥匙能学好一点以后混口饭吃/(ㄒoㄒ)/~~)

        学习一段时间后想把这一阶段的学习成果用最简单的项目进行综合一下,本项目应运而生。

        浅提及一哈,灵感来源于《果宝特攻》的

        好吧有点尬扯————不过游戏开发者应该带点莫名的趣味也说不定~

         让我们先来看看效果(真的很简陋,轻点喷——

场景布置

        入口门

        机关灯两盏

        提示文字

        通向电梯的阶梯

        上升板块

机关灯互动

        当我们接近机关灯的时候会提示可以按F进行互动

        而前方的阶梯让我们按E来尝试,尝试什么?绿色又是什么意思?

        另一盏灯也同样可以通过点击F来切换灯光颜色~

        难道说!

        同时切换为绿色点击E后机关触发,提示消失并且出现仙雾~在上升石板出现提示按G以上升

        按G真的飞起来了!花果山下一层,我们来了!

        演示完毕,让我们看看这么好(朴)玩(素)的效果是如何制作的吧!



 一、新建第三人称游戏模板



二、主要蓝图类编辑

1、入门以及提示蓝图类

         在资源编辑器新建蓝图类overlap-begin-remind

        在添加组件的位置添加  一个静态网格体组件-门框,  一个盒体碰撞器,  一个文本渲染器,并组合到合适位置

        文本渲染器的细节编辑面板的内容为破解以启动,并且设置为不可视状态(我们要设置为接近到范围后会出现)

         打开蓝图的事件图表编辑,选中盒体碰撞组件,右键并为其选择要添加的事件

        这里我们选择组件开始重叠时和结束重叠

此类事件会在玩家触碰Box范围时候触发和结束触发

        接下来我们在事件编辑处右击搜索toggle(切换),为文本渲染器message添加一个可视效果切换的效果

        此效果会切换对象文本渲染器的可视效果,让我们的提示文本本是不可见,切换后就为可见

        最后这样连接引脚,在主场景拖动蓝图类放置一个实例,编译运行后,就可以实现效果触碰门范围(其实是我们所设置的Box范围)时候出现提示,离开后则消失~



2、机关灯蓝图类设置

        在资源编辑处新建名为Light的蓝图类

 

        添加组件为两个静态网格体灯罩,将一个的旋转180度可以得到一个完整的灯罩

        添加一个点光源pointlight组件,放在灯罩内的合适位置

        添加一个Box盒体碰撞

        添加一个火焰的粒子效果(在新手包里面有),附属于点光源

        添加一个文本渲染器,内容设置为press F to change color,同样设置为不可见

        此处的事件图编辑与之前相似,添加盒体碰撞切换文本渲染器的可视性切换,另外在数据流继续下去的时候,多加一个节点 启用输入 ,在事件触发后可以开启玩家输入以进行互动

        另外要添加节点  获取玩家控制器  并将引脚连接到启用输入的玩家控制器输入口

        添加一个变量名为ColorARRAY,在其细节面板设置类型为线性颜色,右侧点击设置为数组类型。

        在编译之后,下方默认值添加四种我们定义的颜色

 

        接下来我们添加键盘输入事件F

        此处的逻辑为:每当我们触发F后,要在颜色数组中读取一个颜色数据并且设置给灯光颜色

        我们把数组拖进来获取,然后添加与之关联的GET节点,此节点可以根据输入的index索引值返回出相应的数组值

        接下来添加一个MATH数学类节点的随机整数生成节点,设置范围为0~3

        将其生成的整数值赋予我们所添加的一个变量int值设置出来,连接到GET节点的int输入脚

        接下来添加灯光颜色设置节点,直接右键搜索设置光源颜色,对象为我们的组件point Light

        此节点会根据输入的颜色赋予对象光源

        最后来连接事件数据流向

        点击F后,设置出一个随机整数,再连接到设置光源颜色,别忘了将颜色数组读取的值传给设置光源颜色

 

 

        在主场景拖出两个实例,它们都可以实现我们所期望的效果

 



3、上升台阶蓝图类编辑

        添加一个名为UpStairs的蓝图类

 

        添加两个静态网格体,阶梯(Up)和平板(Stairs),放置合适位置

        添加三个文本渲染器:

                两个是一开始就显示的press E to try 和 green,设置为可见

                还有一个是press G to up,设置为不可见

        来到事件图表编辑界面

        自定义事件going,其连接流向为两个提示文本渲染器可视性切换以及两个事件的绑定

        这里涉及两种蓝图通信的方式:直接调用事件事件调度器

        我们待会要在关卡蓝图中设置满足某个条件以后触发going事件,并在此时绑定两个事件到我们添加的事件调度器goingup上。事件调度器常用功能为绑定、调用。在调用时候会同时发生所有在此调度器上的事件!

        这里我们绑定了两个事件,一个是切换“按G以上升”的提示文本切换其可视性,以及切换我们所设置的布尔型变量isUper为1(isUper变量一开始我们设置其值为否也就是0)

        我们要利用这个切换来限制键盘输入G事件的可用与否,当我们设置的机关解开后,此事件调用,isUper为1则可以开始上升,若为0则始终不能上升

        拖动我们所设置的调度器并点击绑定进行绑定操作

        注意每次绑定只能绑定一个,所以我们在数据流程上设置两个绑定节点

        设置两个自定义事件,分别为切换可视性数据流和SET我们的isUper为1事件,连接事件引脚到调度器绑定的事件输入口

         然后我们来设置输入G事件

        使用一个分支branch节点来判断isUper的值是否为1才能继续数据流程的操作

        添加一个时间轴节点,设置为5秒Z维度96米(随意)

        添加一个“添加本地偏移”节点,对象为我们的上升方块Stairs

        连接时间轴的新建轨道到偏移节点向量输入

        至此,此蓝图的编辑完成



 4、关卡蓝图设置

        打开我们的关卡蓝图

        在世界大纲上直接拖动我们的三个实例到事件编辑图

        对于UpStairs我们要获取其stairs

        再添加一个获得其场景位置的节点

        对于这两个机关灯实例我们要获取其int变量

        将两个int变量个拖出一个MATH方法中的判断相等节点,判断各自是否为1,而1为我们所设置的颜色数组的绿色的index值,再判断这两个判断结果是否同时为1(AND节点)

        添加键盘输入事件E节点,通过分支判断两个灯颜色的判决结果是否都为1,从而允许执行再位置处发射节点

        在位置发射节点可以在我们输入的位置(stairs位置获取输入),以及设置好的发射效果(此处为烟雾),在事件数据流程到达此处的时候可以生成我们设置的效果

        最后我们在流程后方添加调用Upstairs对象的Going事件和goingup调度器,实现我们之前所述的事件流程

 

 



三、总结

         本来以为这是很简单的实现,没想到制作途中发生了很多意想不到的问题,虽然耗费了狠毒功夫,但还是做成了。。。。

        甚至都要掩盖了它本身是个很简单效果的这个事实本身!!!

        希望以后能带来更好的练习。

        冲冲冲!!!

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值