零基础Unreal Engine 4(UE4)图文笔记教学之多种开门方式的实现与合并(六)

在上一篇文章中,讲述了如何用蓝图制作一个简单的门和玩家进行交互

那么这篇文章将让你对蓝图有更多的理解,同时也会弄一些小东西出来

主要是制作多种开门方式,以及将开门多种开门方式合并,并且在创建中快速调整开门方式

在很多RPG,FPS游戏中都有开门的环节,开门方式大致有3种,第一个我们已经实现了,那么来看看后面两个如何实现

本章主要讲述了开门的另外两种方法,以及怎样在场景中快速调整参数

 

正文:

1.后面两个都需要按键,所以我们要先设置按键

找到编辑里面的项目设置

找到列表菜单里面的输入,打开后可以顺便展开

我们就在这里设置按键(可是为什么会有两个类型的按键,上面一行提示已经告诉你了,你可能不太懂,其实Action类型按键就只有两个状态,0和1,激活和未激活,比如空格跳跃就是这个类型的按键,因为只有跳和不跳两个状态,不需要其他东西;而Axis是有输出值的,比如位移和转向,是持续的,特别是转向,是用鼠标的沿XY轴位移的值来映射的,而且根据鼠标DPI不同后面也可以调整,现在不需要知道这么多,我们先不研究这个)

点击Action Mappings旁边的+号添加一个按键输入,按键自己看着办,名字要记住后面要用

在内容浏览器中,打开上次的创建的门蓝图

上面三张图是上次做的自动门,我想在原来的基础上增加开门的方式,所以我们先把线断开,增加调试完新内容,在处理

右键空白处,先把刚才我们新建的按键弄进来

选中上面的开门的那一堆东西,Ctrl W 复制下来,并连接(简单的说一下Passed和Reledsed,当你按下和松开的时候就会发出一次信号)

 

将上次进入体积事件和退出体积事件放到合适位置,搜索三个节点,Enable Input、Disable Input和Getplayercontroller,按图连接,这样做是为了保证玩家进入可控范围后,Actor能响应玩家按键输入,退出可控范围后禁止响应输入

 

回到场景中,运行游戏测试一下快捷键是Alt+P

按下E,门能开了吧,但是只能开门,很简单,在Ebutten后面增加一个FlipFlop节点,按图连接就可以了,这个节点的作用就像乒乓球一样,交替触发,默认先触发A,也是一个很常用的节点(时间轴(timeline有很多输入节点,很简单,看名字都知道,自己试一下就知道了,比如我这里用的两个Play和Reverse,前者为正向播放,后者为逆向播放)

到这里基本上已经实现了按键秒开门的蓝图,其实我们就增加了两个节点,就改变了开门的方式,中间开门的逻辑没有任何变动,后面我们将使用模块化的方式来制作简单而又实用的东西。

 

2.如何实现按键按下几秒后门才打开?我们同样用TimeLine来制作,首先我们把开门逻辑再次复制一份,为了调试后面的开门方式现在先把刚才的Ebutten先断开,再复制一个到新的开门逻辑边上,把timeLine复制一个到中间,其他不变,如图连接。(注意是Finished连接Play)

测试一下,靠近门,按住E,2秒(自己设置的Timeline值)后开门,如果中途松开e键,不会开门,但是,现在是不能关门的,这个最后来修改,先进行下一步(如果还是开门了,那么请检查一下节点是否连对)

 

3.到现在我们已经有了3种单独的开门方式了,当你的场景中需要用到这三种门的时候,创建3个蓝图很麻烦对吧,使用的时候也很麻烦,那么下面我们就在一个蓝图中存放三种,不对,是四种门,按照场景中的需求进行快速调整

滑轮可以缩放这个不用讲吧,你可以看到,这么多东西,其实很多都是重复的,前面我们进行的都是快速实现功能,第二阶段我们进行重构,把这些分两类,一类是开门方式,一类是实现开门

这个时候我们需要3个布尔类型的变量,在左下角,点击加号,名字可以自己取,但是可读性一定要好,并且点击每一个名字后面闭着的小眼睛,这样做是为了方便我们在场景中可以直接更改而不需要回到蓝图中

按住键盘上的B,鼠标左键单击空白处可以获得一个选择分支,如图创建五个

将刚才创建的几个布尔变量连接到分支节点左下角的红点上,一定要一一对应哦

       

如图连接线,有点多,注意一下最下面的是连的Finish可以了,完成这一步,已经可以在场景中控制门的开启方式了

点击物体,在右下方的细节面板中,你可以设置你刚才创建好的三个变量值,记住由于三个变量之间没有任何联系,你只能手动的去调整三个变量,此时必须要保证只有一个变量是打上勾的(真),否则就会出现一些错误。

至于这三个变量之间的联系,可以理解为单选和多选的问题,后面会单独出一篇,这里就不啰嗦了。

 

总结:

本章主要讲述了开门的另外两种方法,以及怎样在场景中快速调整参数

下一篇讲拓展讲解一下关于设置门旋转使用到的SetRelativeRotation节点相关节点属性SetActor、SetWorld节点三者之间的的区别,以及何时使用的问题

 

 

 

 

 

 

 

猜你喜欢

转载自blog.csdn.net/qq_30919603/article/details/81118552