题目比较简单的说就是这样造出来的门,直接就能开关,不需要再进行添加交互功能,也就是创造一个类,然后每次引用实例来进行门的创建
在内容侧滑菜单里创建一个蓝图类,actor
并改一下名,这里是我弄好之后的样子,所以图标不一样,直接命名 door_1也可以,然后点开
在左上角添加一个静态网格体组件,改名doorframe
在静态网格体里找到doorframe进行添加
同理,给doorframe添加一个子物体,door,并在同级添加一个box collision(盒体碰撞触发器)
把二者进行组装,这个样子就ok
同级
然后点开box,在右边的细节里往下翻,找到事件,点击组件开始重叠时和组件结束重叠时后面的加号
然后会得到两个事件
我们再进行创建,右键空白部分,进行搜索
然后,为了使开门拥有过渡效果,我们添加一个时间轴,这个时间轴的作用史,创建一个或多个轨道,进行连接之后,可以使变量在设置好的情况下缓慢改变
搜素时间轴,得到这个方法,打开之后,创建一个浮点型轨道,默认得名称是新建轨道0
在这个轨道添加两个关键帧,并修改时间和数值
点击这两个按钮,使图像可视化
改变关键帧的长度
然后进行连线 ,大致意思是,碰到触发器时,进行门的z轴的旋转角度从0到85的缓慢变化,离开触发器时,进行反向变化
靠近,门开了
然后我们来实现,靠近门之后,press ‘e’(keyboard)可以把门打开
需要添加的事件或者方法如下
其中
E是一个判断,按下时进入gate
gate是一个流程,完成开门的动作
getplayercontroller用于获取玩家的控制,返回玩家参数
enableinput和disableinput分别是接受键盘输入和拒绝键盘输入的一个卡口,即接近时允许输入,离开时拒绝输入
flipflog用于分叉,第一次输入走open这条路,下一次输入走close这条路
连接方法
口述过程:
接近box触发enable,离开 box触发disableget得到玩家的输入,与enable和disable相连,然后一个进行open程序,一个进行close程序,E的pressed与enter想连,进入gate,exit执行经过flipflog的转换与开关门具体实现的程序连接。
然后我们再来实现鼠标点击实现开关门
具体连接和事件等如下
其中,SET是一个鼠标光标显示消失的功能,名称如下
靠近时显示鼠标光标,离开时不显示鼠标光标,然后在door的细节里找到,点击时事件,即可得到on clicked
根据上个功能的口述可以大概了解这个功能的逻辑,此外需要在游戏模式中进行设置,鼠标点击才能生效,在世界场景中,找到玩家控制器类,进行添加,然后启用点击事件,即可
开门了