如何在 UE4 中制作一扇自动开启的大门

前言
相信很多玩过游戏的朋友都知道,在玩游戏的过程中,如果我们被一道门给挡住了去路,只要按下某一个按键,门就会自动的开启。于是,今天我就带大家来制作一道会自动开启的大门吧!
场景搭建
首先,在我们的初学者素材包中找到 Walldoor 这个素材,并将其拖入到我们的场景中。

然后选择一个材质,让墙看上去更逼真,效果如图所示:


接下来,再我们的初学者包中,在找到 Wall 这个素材,将其拖入到场景中去,让其模拟成一道石门,改变它的大小和位置,让它看上去更像一道门。



随后也给这道门加上一个材质,让其看上去略带一些科幻元素。

好了,这样一道嵌在墙里的门就已经做好了,下面我们来看下如何让门动起来。
目标点
现在,我们的门还是静止的,为了让它有一个活动的范围,我们需要给这道门设置一个活动的目标点,让其移动到这个目标的时候就停止下来。于是,我们在编辑器的左上角找到 TargetPoint 将其拖入到我们的场景中。

我这里想要门移动的效果是向左侧移到如图所示的位置即可:

所以,我们将刚才添加的目标点的位置就设定在大门最终打开的位置,大门位置如图所示:

目标点的位置:

目标点设置好以后,我们接下来去拖蓝图。
蓝图
打开场景的蓝图。

将上文中添加的 TargetPoint 按住拖动到蓝图中。

然后依次在蓝图中将 TargetPoint 连接到 GetActorLocation - Break Vector,如图:

右键搜索 Make Vector,将 Break Vector 的 X 坐标拖动到 Make Vector 的 X 坐标上。
接下来,将场景中的 Wall 对象也拖动到蓝图中,和上面的 TargetPoint 一样也连接到函数 GetActorLocation - Break Vector 上。因为在场景中,我们的大门只需要移动 X 坐标,Y 轴和 Z 轴是不需要改变的,所以将 Break Vector 的 Y 和 Z 坐标连接到 Make Vector 的 Y 和 Z 坐标上。
右键搜索 MoveComponentTo 函数,添加到蓝图中。

将 Make Vector 的返回值连接到 MoveComponentTo 的 TargetRelativeLocation 节点上,然后设置大门移动的时间为 4 秒。

右键添加键盘按键 E 开启打开大门的事件响应。


将我们之前拖到蓝图中的 Wall 对象再 copy 一个,然后去获取 GetRootComponent,最后连接到 component 上,如图:

回到我们的场景中,选中我们的 Wall 后,在右边的查看面板中,将属性设置为 Movable,否则我们的大门将不会移动,因为默认是 Static 的。

运行效果

最后
好了,本次内容到此就结束了,咱们下次再聊。
版权声明: 本文为 InfoQ 作者【HelloWorld杰少】的原创文章。
原文链接:【http://xie.infoq.cn/article/33e367a322620968270906c85】。文章转载请联系作者。
评论