UE4-碰撞事件:开关门基础篇

Posted time_iter

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了UE4-碰撞事件:开关门基础篇相关的知识,希望对你有一定的参考价值。

基础篇主要讲可以通过什么方式来达到开关门的效果;
高级篇中,会讲到如何使用蓝图类来编写可复用的开关门;

一:概念篇
1-:Tigger:可以用来进行一些碰撞事件或者触发一些特效<点击按钮,灯开关;门开关;动作特效触发>;
2-:Box Tigger:是一个立方体的Tigger,在程序运行过程中隐藏,无法看到具体的物体。

二:实践篇
1-:新建一个New Level,然后选择Default;
2- : 在Basic中,选择Box Tigger,拖拽到空间里,设置更改大小及位置;
3-:选择Box Tigger,打开关卡蓝图<点击Blueprints –>点击open Blue level Blueprint>;
4-:在Event Graph中点击右键:
如图:

解释:
-1:Add Event for Trigger Box1:为Tigger添加碰撞事件;
-2:Tigger Box1:为刚才添加的物体的名字;
-3:Crearte a Reference to TiggerBox:创建一个刚才选中的物体的引用;

5-:创建引用及碰撞方法;

解释:
-1:OnActorBeginOverLap:触碰开始时执行事件<进入区域触发事件>;
-2:OnActorEndOverLap:触碰结束时执行事件<退出区域触发事件>;
-3:Overlapped Actor:碰撞的物体相关信息;
-4:other Actor:碰撞的物体相关<可获取碰撞物体的名字等其他信息>;

6-:试验

运行程序:当进入时,在屏幕左上角打印in;当离开这个Tigger区域,在屏幕左上角打印out;

三:应用篇:
1-:在场景中拖入一个物体,调整大小及设置属性为可移动;
2-:AddActorLocalOffset:改变位置进行相关移动;<相当于门打开>

运行结果:可以看出在进入的时候,移动到我们指定的位置,但是比较生硬,可以说是一瞬间的事情;

运行结果:进入门打开,离开门回到原位


<Y轴坐标位置的设定>

3-:升级版<使用EventTick进行平滑移动>

运行结果:进入场景时,物体开始平滑移动,但是自动停止;
4-:在升级<平滑移动,自动停止>
-1:添加一个bool变量,当为true时,物体可以移动,当在物体内是,可以移动;
-2:在进入Tigger和离开时更改变量的值:

-3:设置物体的Y值到达一定的位置时,物体不可移动,更改变量值;
获取物体的坐标:

-4:设置当物体Y值坐标大于或小于某一个值

运行结果:进入场景时,物体开始平滑移动,然后移动到一定距离,停止;

四:升级篇
1-:打开蓝图关卡,在Event Graph中点击右键,新建TimeLine;
2-:双击TimeLine;
-1:点击F+,添加一个函数;
-2:Length:整个任务执行的时间;
-3:DoorLine:自定义函数名;

-4:在两个标红点位置按shift,点击右键,修改Time和Value<一般情况下,当time等于0,Value等于0;time等于任务时间,Value等于1>

2-:事件驱动
1-:Lerp差值计算<一个时间过渡函数>

2-:解决不同电脑帧数不同导致的问题;<修改B的值>

五:战斗篇
1-:

设置终点位置<SetActorLocation<相当于直接移动物体到某一个坐标系位置,前提是需要知道移动前与移动后的相关坐标系>>

2-:蓝图如下:

运行结果:按照A.B的差值,在自定义名字叫DoorLine的TimeLine中,随着Vaule的值得变化,在一定时间内移动到我们设置的差值位置;

高级篇中,会讲到如何使用蓝图类来写一个可复用,可自定义功能的Actor。

以上是关于UE4-碰撞事件:开关门基础篇的主要内容,如果未能解决你的问题,请参考以下文章

14 UE4蓝图:制作门的蓝图类

蓝鸥Unity开发基础三课时16 碰撞和触发事件

cocos creator基础-(二十)物理引擎碰撞检测

ue碰撞块不显示

[UE4]Overlap Event 碰撞事件

UE4 C++:事件绑定(输入碰撞检测定时器)