UE4 控制开关门基础之一

1.搭建场景,制作一个门,选中模式窗口下Basic/合体触发器(Box Tigger),拖拽到场景中,调整位置大小,将门包裹。

说明:Box Tigger:是一个立方体的Tigger,在程序运行过程中隐藏,无法看到具体的物体。

2.选择UE4中Blueprints->关卡蓝图->打开关卡蓝图

3.在蓝图中右键,添加OnActorBeginOverlap及OnActorEndOverlap两个事件(前提鼠标要将TriggerBox选中)
在这里插入图片描述

说明:

OnActorBeginOverLap:触碰开始时执行事件<进入区域触发事件>

OnActorEndOverLap:触碰结束时执行事件<退出区域触发事件>

在这里插入图片描述

Overlapped Actor:碰撞的物体相关信息

other Actor:碰撞的物体相关<可获取碰撞物体的名字等其他信息>

4.添加时间轴

右键搜索TimeLine选择添加时间轴,重命名DoorTimeLine。选中TimeLine双击打开制作时间轴界面。

在这里插入图片描述

说明:

Play:执行此事件时调用

Play from Start:从头开始执行事件<事件在执行过程中未执行完毕,某一条件改变,事件重新从开始执行>

Stop:停止执行事件<事件在执行过程中未执行完毕,某一条件改变,事件停止执行>

Reverse:反向执行<事件在执行过程中未执行完毕,某一条件改变,事件反向执行<中间某一位置立刻反向执行>>在此时为动画反向

Reverse from End:事件从末尾反向执行<事件在执行过程中未执行完毕,某一条件改变,事件从尾部开始反向执行>

Set New Time:更改事件的开始执行时间<原函数的总执行时间不是从0开始,而是新设置的时间点开始>

New Time:设置函数执行起始点

Updata:事件在执行过程中,不断执行更新的部分<在总执行时间内,不断驱动执行>

Finished:事件在总时间内执行结束调用<事件在总执行时间结束后执行此方法>

Direction:执行的方向<是一个枚举函数,正向OR反向>

5.制作时间轴:选择添加向量型轨迹,(V+ 图标)将动画名称更改DoorLocation,在时间轴中添加时间点:Shift+左键

设置开始时间及值。设置执行时间Length为5秒。设置完成后Ctrl+S保存。注:(该时间轴始终点值代表:将设置的起始点终点的值加到当前物体对应的坐标上,如:物体当前位置为(-20,0,0),时间轴起点坐标x=-20,终点坐标:20,动画最后物体运动轨迹:-40到0,会造成物体运动轨迹错误)

在这里插入图片描述

6.世界大纲视图中选中要移动的门对象

回到蓝图,右键创建搜索SetActorLocation,右键选择创建一个门的引用

在这里插入图片描述

此时进行连线:

在这里插入图片描述

回到编辑视图界面,选择门的游戏对象,在细节面板里,将Transform下的Mobility更改为可移动模式,点击开始,发现门是有移动效果,但是移动位置不对。因为我们设置的位置为(0,0,0)点,鼠标移到SetActorLocation中的NewLocation上会有显示。我们没有设置门在哪个位置进行移动。所以要设置游戏开始时获取到门的位置,然后再门当前位置上进行动画播放。

7.添加事件BeginPlay,右键搜索BeginPlay。

8.选中门,创建一个门的引用,右键搜索GetActorLocation创建,将蓝色点进行连线,(或者直接选中门引用中的蓝色标点进行拖拽,拖拽到蓝图中后松开鼠标进行搜索GetActorLocation创建,此时连线自动连接),黄色按钮Return Value进行拖拽,脱离后松开选择提升为变量。此时在蓝图左侧变量栏中有此变量,进行重命名DoorInitalLocation。

事件BeginPlay与设置变量的节点进行连接,此时游戏开始时将获取到门的初始位置。
在这里插入图片描述在这里插入图片描述

9.将蓝图中左侧变量面板中的DoorInitalLocation变量拖拽到蓝图中,选择AddVector+vector。

在这里插入图片描述

10.选中DoorInitalLocation节点中的黄色按钮右键选择断开到vector+vector(A)的连接,并设置与第二个黄色按钮连接,将TimeLine中的DoorLocation黄色按钮与刚创建的vector节点第一个黄色按钮连接。

在这里插入图片描述

总图如下:

在这里插入图片描述

11.完成后点击Play进行查看,有时候会碰到第一次进入检测后,门没动,或者看到了动一点。此时看蓝图时会发现,OnActorBeginOverlap及OnActorEndOverlap方法同时执行。遇到此情况,与TriggerBox的模式有关。在世界大纲视图中选中TriggerBox,在细节面板中找到Collision组件,将碰撞值预设更改为自定义。后续将碰撞响应中除Pawn参数更改为Overlap其余参数全部跟改为忽略。

在这里插入图片描述

效果图:

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_22975451/article/details/113872878