ue4显示数字_UE4引擎——姜小白修炼记(二)

    最近又看了不少UE4蓝图的东西,感觉自己经验值又大涨了不少,是该升升级了。有些东西还是抓紧把关键知识点做个记录,不然忙这忙那的又会忘了不少,乘着假期,下雨窝在家赶紧更新姜小白修炼记,该下的副本还是要下,该打的怪还是要打啊~

       这次完成一个场景互动,通过道具互动开门,通过道具打开机关,效果见视频

重要知识点(蓝图通信,蓝图类及蓝图关卡通信,文本触发,可打断循环节点)

一、随便搞个场景

2a36725f49025095b5d6f43ba5079e1c.png

   场景分为两个部分,首先角色需要找到钥匙打开外面的门,然后进入室内寻找出口,出口的机关门是通过灯光开启触发,触发后门打开,角色顺利逃离至室外。

小知识点:添加粒子

a5a7b413a87f6880af3ab67b94602bac.png

二、门的蓝图类创建

       门的蓝图在修炼记(一)中已经有详细说明了,这里我将把新的内容做一个详细的说明,首先是文本的创建,我希望在开门的时候,靠近门会出现一行文本提示,告诉玩家执行操作,这里我们使用TextRender,通过新增组件直接打TextRender就可以出现,文本的层级请放在门一起,这样,门打开时文字会随着一起打开。

a115f49f996d05b261bdbf01d1f784d5.png

  文字我们需要的效果是,当角色走进触发盒子,文字出现,离开则消失,我们需要通过set visibitity节点控制文本的可见属性(文本默认属性必须将可见√取消)

44d72ab32f7daf2eefe44713eb53ed3f.png

    然后,我们的剧情是希望角色一开始开门时,门因为没有钥匙而无法打开,同时屏幕会出现没有钥匙的提示语。这里就需要通过变量作为一个判定条件,当角色拿到钥匙时,门可以开,反之则不开,所以我们创建一个变量,用分支节点来判定阻断门的初始状态为不能打开。

     因为默认变量为F,判定为F后输出打印文字“你没有钥匙”,而输出T则需要钥匙的触发,这个需要后面的钥匙蓝图来触发。所以默认F,输出F,门在没钥匙的时候是无法打开的,就是这个逻辑,如果没有编程基础,这里需要好好理理思路。其实看下流程节点的连线关系就会明白。

6f2271bc0cfae7214990e6417e11d548.png

我们看下在判定为F的情况下,画面的显示效果

19105d8f4becbe9e32a579b1101e1091.png

  然后我们需要控制门把手部位的文字的显示状态,当我们触发开门时,文字可以正常显示和消失(人物进出触发盒子时),而当角色完成开门动作后(按F开启门后,离开触发区域),文字就保持隐藏状态再不会出现。所以我们再创建一个变量,取名为“文本消失”,分别安插在角色执行节点前和角色执行节点后,如图

5390b55654d2983cf244f05d81264c1a.png

276c7e0aed072d34c3f61c87a4b62b05.png

知识点:因文本变量默认F,分支节点输出F,顺利输出后面的文本信息,而此时T通道为空,后面SET变量√,那么角色在执行完开门后,再次进入触发区域,则第一个变量的T通道则输出SET(因为SET是T),就不会再走F通道,文本也就不会再出现,所以文本在没有实行按键开门操作前,进出触发区域永远可以显示,而一旦执行了按键操作,则后续永远输出T通道,F通道永远关闭!

三、钥匙的蓝图类

   钥匙作为触发开门的手段,我们需要单独做一个蓝图类,作用是当角色靠近钥匙,可以通过按键拾取,同时激活开门的蓝图类,钥匙拾取后消失、

a5e3df95a1dbc2a7a2834ba8560bdb3f.png

  前半部分节点和开门的是一样的,如图,开始结束事件决定了进入触发区域和离开触发区域的流向,F键执行拾取的操作

 后半部分才是重点,创建Get all actors of class节点读取所有蓝图类,然后选择门的蓝图类

7e2b8abc8b97420d894d64c8b44d3294.png

     这个节点用来搭建蓝图类和类之间的通信,通过选项决定你当前和哪个蓝图类进行关联,找到你做得门的蓝图类即可。

       然后通过数组GET确定你要触发的是哪个门,0代表第一个门,后面以此类推,右键SET你要控制的变量(之前我们在门的蓝图类中,变量为F还记得吗,这里把√打上)

0e82b5b04c0c6563c565fa56cdb08f7d.png

  这里的节点意思,就是当角色进入钥匙的触发区域,按了键盘拾取后,蓝图通过Get all actors of class节点选择要通信的蓝图,然后控制那个蓝图里的门执行打开的操作。钥匙拾取后再通过销毁节点进行隐藏。

    通过以上两个蓝图的通信操作,我们实现了拾取道具触发道具的操作,下面我们进入室内,进行第二轮的蓝图创建。

四、灯的蓝图类

      模型需要搭配灯光组成完整的组,场景中我们需要六组灯光。然后通过灯光的显示和隐藏来实现开灯效果,这是基本概念,前面的链接不做重复讲述,和门的是一样的概念,重点后后面一套节点,如图

a0d4242314e1f10310ae20e9c9bf3c2c.png

33d9b045982323a62fac280285116c59.png

重要概念解释:我们和门一样创建了文字,就是说当我们将灯打开后,那个文字会永久消失,是不是也意味着灯被打开,这个逻辑先要确认。首先我们还是需要蓝图通信Get all actors of class节点来确定我们灯的蓝图,然后通过“可打断循环节点”来确认是不是所有灯都被正确打开,只有确认才能出发机关,那么它的逻辑是怎么来确认的呢,这是一个循环,我们想象一下,六个灯组,我们依次去触发开关,一圈下来是不是一个闭环?所以我们通过分支判定两个结果,一个结果是所有灯全部正确打开,输出T,一个是有部分灯未正确打开,输出F。比如有123456这六个数字,顺序可以打乱,如果其中有一盏灯的触发是坏的(无法开灯),那么这个循环是无法闭环的,它会BREK重新进行循环,直到你把坏的那个灯改好。这样的好处是不会出现BUG,比如明明有六盏灯,你开启了五盏,机关也被打开了,这就是BUG。

Completed输出循环结果,通过分支判定为T时触发后续机关。

五、机关门的关卡蓝图

      整个场景的最后就是打开那个冒火的机关门,因为它不需要触发执行,只是一个旋转的动作,我们可以把它设置为一个关卡蓝图中的事件去做,创建关卡蓝图,菜单如图

48df272996b198a5eec3a64041097e69.png

     快捷键CUS创建一个新的事件,取名为机关门,然后调用我们门的模型,用节点控制其旋转角度,这个很简单,不做详细说明,如图  

e99e6522e05ed29dc6ebfb9e89c8cd5c.png

     这个事件需要被之前的灯的蓝图类调用,我们需要回到灯的蓝图类,在分支T的后续执行节点中创建控制台节点,用CE空格加事件名字,可以快速调用机关门的事件,如图所示

d2f7a94a4ac6c3d86fbb4cf7f74e070e.png

重点:因为机关门不是在蓝图类里的,它的属性切记一定要切换成可移动,不然你再操作门也不会开,这个小问题我做得是时候搞了好久才发现,差点重做!如图

016740cc856e191b9d40453e4cb3c263.png

总结:这个案例看着不是很难,但其实在制作时要注意的细节和一些逻辑思维上的东西太多了,特别是分支节点和可打断节点那一块的东西,新手要好好理理思路,蓝图通信也非常重要,UE4中各种事件之间是不可能做在一个蓝图类中的,就像拼玩具一样,不同的组件要分开做然后通过通信进行关联,才能得到完整的事件流程。UE4目前我只是涉及了蓝图模块,灯光材质,特效,VRAR等还有更多的领域需要去学习和成长。后续会逐步更新,别学边记!凡人修仙,小白也能成大神!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值