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-碰撞事件:开关门基础篇的主要内容,如果未能解决你的问题,请参考以下文章