UE5 - 开关门功能效果实现教程3(升降活塞门)
作者:hangge | 2025-12-02 08:35
升降活塞门的制作方法和普通门没有太大的区别,只需要设置旋转 Rotation 的 z 轴为向上,然后移动 Location 的 z 轴即可。这次我们不再使用时间轴实现开关门效果,而是使用“以事件设置定时器”节点触发自定义事件实现门移动。






三、升降活塞门
1,实现过程
(1)创建一个“Actor”类蓝图并命名为“BP_Door2” ,双击打开蓝图,在“组件”面板中单击“添加”按钮创建两个静态网格体组件,一个命名为“DoorFrame”,另一个命名为“Door”。因为它们分别代表门框与门,并且门通常要被安装到门框中,所以将“Door”组件附加到“DoorFrame”组件中。

(2)在“细节”面板中设置“DoorFrame”组件的“静态网格体”为“SM_DoorFrame”。设置“Door"组件的“静态网格体”为“SM_Door”,移动门到门框中。

(3)如果需要开门,就需要使门旋转,添加一个“Box Collision”组件且使其覆盖整个门,用于检测角色是否碰施到门。

(4)在“细节”面板中为“Box Colision”组件添加“组件开始重叠时”与“组件结束重叠时”两个事件。

(5)然后在“事件图表”中添加如下逻辑:
- ①触发检测
- 当角色进入(On Component Begin Overlap(Box))碰撞盒时,把目标门的相对 Y 位置(Target)设为 200,表示“向上打开”幅度;
- 当角色离开(On Component End Overlap(Box))碰撞盒时,把目标位置设回 0,表示“关闭”回原位。
- ②定时调用自定义事件
- 在每次设置完目标后,都调用一次 Set Timer by Event,每隔 0.01 秒循环触发一个名为 UpDoor 的自定义事件,直到手动停止计时器。
- ③平滑插值移动门(UpDoor 事件)
- 拆分当前门(Door)的 Relative Location,取出当前的 Y 分量;
- 用 FInterp To 节点把 当前 Y 以一定速度(Interp Speed=2.0)向 目标 Y 插值(Delta Time 取自 Get World Delta Seconds);
- 把插值后的 Y 和固定的 X/Z(这里 X=0、Z=1)重新组成一个向量,通过 Set Relative Location 应用到门上。
- ④停止计时器
- 插值完成后(即当前 Y 与目标 Y 足够接近时),通过 Branch 判断,如果已到位,就把之前的 Timer Handle 丢给 Clear and Invalidate Timer by Handle,停止继续调用 UpDoor。

2,运行测试
(1)编译并保存后将“BP_Door2”蓝图拖曳到关卡。

(2)进入 PIE 运行模式,移动角色,可以发现当角色靠近门时门会自动向上升起。

(3)角色远离门后门会自动落下关闭。

全部评论(0)