虚幻引擎-开关门的实现(蓝图)

发布时间:2026/7/15 14:52:43
虚幻引擎-开关门的实现(蓝图) 简易自动门在虚幻引擎中一个简单的自动感应门是通过触发器感应玩家是否到达了设定的开门范围从而开门。这个触发开门的范围就是触发器的范围。在场景中搭建墙、门框、门同时搭建一个触发框。当人物走到触发框的范围则开门离开则关门(选中的橙色表示触发框)。在关卡蓝图中事件图表对开关门逻辑进行编辑。首先需要给触发框添加一个开始接触事件和一个结束接触事件,分别为OnActorBeginOverlap和OnActorEndOverlap括号中间为对触发框的命名然后则是门的运动门的开关只是在Z轴上做旋转运动所以只需要改变门在Z轴上的旋转角度就行。假设门初始是0度开门后是85度位置不变。当接触到触发框后门就会从0度变为85度的状态。这里就要添加一个设置Actor旋转来改变门的角度,在这可以鼠标右键单价New Rotation分割结构体引脚来只修改Z轴的旋转。但是如果只是这样那么当接触触发框时门是马上从0度变为85度没有门打开的过程所以需要使用TimeLine(时间轴)来设置开门过程。双击时间轴进入时间轴设置添加一个浮点轨道在0秒的时候插上一个关键帧为0度在插入一个关键帧5秒或其他门打开的时间为85度,这样门就不会一瞬间到85度而是经过一个打开的过程到85度。将个事件连线,编译。运行效果如下使人物无法直接穿过门选中门在细节窗口中找到静态网格体双击门进入视口在上面的碰撞中可以给门添加一个盒体简化碰撞,显示为绿色边框可以调整边框缩放保存。按F键开关门如果只是在关卡蓝图的事件图标中编辑那么在游戏中每一扇门都需要复制同上简易自动门的蓝图操作。所以可将这一个门包括开关门的逻辑写入一个蓝图类当中。蓝图类:蓝图类定义了一种新类别或类型的Actor这些Actor可以作为实例放置到地图中 就和其他类型的Actor的行为一样.可以在内容菜单中鼠标右键创建一个蓝图类,下图的BP_Door。每当需要可以通过F键开门的门的时候就可以将这个蓝图类拖入场景中调用。双击打开蓝图类可以在蓝图类中使用静态网格体搭建门通过视口能够看见在事件图表中使用蓝图搭建开关门逻辑。在这里面触发框Box的作用不再是开关门而是用来获取玩家是否到达了这个范围再这个范围内玩家才可通过F键控制门门的开关。上面的是接触触发框下面的是结束接触触发框也就是走出了触发框的范围这个是获取玩家就是我们操控的小人这个是启动键盘输入。在一个蓝图类中直接按F键是不能被接收的只有在关卡蓝图中可以直接接收的。这给允许键盘输入的对象就是2中的我们获取的玩家判断是否等于0。这判断的就是门店开关状态0为门是关着的。获取状态包括位置旋转缩放这里只获取旋转中的Z轴。目标就是我们所需要获取数据的对象这里是我们需要开关的门。分支就是接收4的判断结果如果为0就是真true不为0就是假false。打印字符串通过前面的判断门的角度为0度时门是关着的这时接触触发框显示开门false则是关门键盘输入FGate就相当于一个通道这个通道关了想要通过enter就要先打开open它.这里打开的条件就是接触到触发框Box只有走进触发框范围才可以通过F控制门的开关。close就是关闭这个通道toggle就是在开关通道之间切换。Flip Flop,这个就是在A和B输出之间轮替从A开始。开关门的过程设置门的状态拾取钥匙开门创建两个蓝图类一个表示钥匙(BP_Key)一个是门BP_Door1。分别打开两个蓝图类在视口中搭建模型在钥匙蓝图中可以创建一个球型触发框包裹住球然后搭建场景然后在事件图表中绘制蓝图首先是在门BP_Door1的事件图表中编辑逻辑与F键开门大致相同不过添加了个布尔变量的判断是否可以开门就是是否捡到钥匙。这给布尔变量可以在我的蓝图窗口中创建初始值设为False就是没有捡到钥匙。当靠近门时进入了触发框就启用了键盘输入。按F后对是否可以开门进行判断为真则可以开门假就输出字符串提示缺少钥匙。然后是钥匙的逻辑前面与门大致相同一样是接触触发框启用输入打印字符串提示F拾取钥匙。不过在这里面需要对门的蓝图类中的是否可以开门的布尔变量进行修改当拾取了钥匙后布尔变量变为真true以便可以开门。但钥匙和门不是同一个蓝图类那么这就需要一个获取类所有actor的命令来获取场景中的门。在ActorClass可以选择门的蓝图类BP_Door1,由于场景中我们只放了一扇门所有GET那的数字用0。设置是否可以开门变量。销毁钥匙使在场景中消失打印提示。演示