UE蓝图示例----欢迎界面篇(TimeLine小球)

一. 蓝图实现的实例(Level ExampleProjectWelcome)

1.1弹跳小球(史莱姆)的实现

UE蓝图示例----欢迎界面篇(TimeLine小球)_第1张图片

1.2 官方蓝图

UE蓝图示例----欢迎界面篇(TimeLine小球)_第2张图片

1.3 蓝图说明

		1.3.1 小球动画分析,小球跳一个来回为一个循环
		
		1.小球的垂直运动,
		(1)在Z轴方向,自上而下,做加速运动。
		(2)并在接触地面有短暂的停留,也就是Z的值在地面。
		(2)有短暂的为0,随后自下而上做加速运动。
		
		2.小球的缩放运动
		(1)在空中时小球的XYZ缩放均为一致的。
		(2)在小球落地之的极短的时间段内,XY的值急剧增大,并且让Z的值急剧变小。(也就是压扁)
		(3)在小球接触地面之后,向上运动的开始时,让小球的XY的值缩小为正常,并且让Z的值回归正常
		不过在回归正常的过程中,应该超出一部分的值,也就是让XY的略微缩小,再让Z的值略微增大,最后
		再缓慢变回正常状态
		
		注: 之所以会产生这样的结果,是因为小球在碰触地面(硬的物体)会因为急剧受力而导致,急剧性的
		形变。而在回弹的过程中,因为自身弹性的影响,小球不应该立马回归正常缩放,而应该产生缓慢的溢出
		现象,然后在缓慢回归正常。

		3.小球撞击产生特效,在撞击的时候添加一个碰撞事件的**关键帧回调**即可。
		
		1.3.2 小球动画的实现
		在Event中声明一个TimeLine来执行控制。
		TimeLine执行的时候通过Update,也就是在TimeLine运行的过程中更新。(TimeLine的各个参数,请查阅资料)

1.4 具体的实现

		1.4.1 无论是蓝图也好,一般情况下,代码的执行都是有条理的,线性的。
		
		1.4.2 Update 
		   根据1.3,在Update执行的时,我们需要设置小球的位置信息,使用SetRelativeLocation函数,设置小球的相对位置。

1.4.2 Update

	根据1.3,在Update执行的时,我们需要设置小球的位置信息,使用SetRelativeLocation函数,设置小球的相对位置。

UE蓝图示例----欢迎界面篇(TimeLine小球)_第3张图片

	Target为 Ball,我们需要的是小球相对于自己的位移过程。
	下面就是Location的设置了。
		
	使用TimeLine就是为了根据曲线来设置小球的某些属性的大小。比如位移,形变。

1.4.3 Movement

		根据1.3.1,添加一个Movement的Float Track,设置Length长度为3.00,我们需要一个3秒的动画

UE蓝图示例----欢迎界面篇(TimeLine小球)_第4张图片
如上图就是一个先加速,触地,在向上做减速的运动。(1.46秒的时候触地,1.54秒的时候离开地面)

		按住Shift可以添加关键帧。
		右键可以更改关键帧差值。

1.4.2 Scale

		根据1.3.1,添加一个Scale的Float Track,(**注:控制Scale完全是可以用一个曲线来完成的,因为小球的XY和Z,
		是完全的相反的两个过程,一个水球的横向变大,那么纵向就会缩小,纵向变大,横向就会缩小)**

UE蓝图示例----欢迎界面篇(TimeLine小球)_第5张图片

	      如上图,小球在开头和结尾,是不产生形变的。所以从0.5秒的地方开始,做加速变形。(可以先从XY来理解这个曲线)
		 先让小球的XY慢慢缩小(类似水滴下落,XY变小,对了,因为后面会用到Lerp函数,进行差值运算,曲线中0的含义代表的A,-0.5则代表,-0.5A)
		 碰撞地方是1.46S,那么在这个地方,取值为(1.46,-0.5),随后XY急剧变大,(在1.54达到顶峰1.54,2.0),随后在1.7的位置,让小球
		 回弹为正常状态,1.7S之后要做一个溢出的缓冲,再让缓冲在2.6S的位置回复圆形。

1.4.3 Impact

		根据1.3.1,添加一个Event Track,也就是在某个某关键帧触发该函数的回调。

UE蓝图示例----欢迎界面篇(TimeLine小球)_第6张图片
在1.46,也就是产生撞击的地方,去调用生成撞击特效的方法。

1.4.4 具体

UE蓝图示例----欢迎界面篇(TimeLine小球)_第7张图片

	在声明完这三个序列之后,会出现如上的TimeLine,Impact会触发一个函数,Movement和Scale是值传递。

UE蓝图示例----欢迎界面篇(TimeLine小球)_第8张图片

Lerp方法,之所以使用Lerp(Vector)是因为右侧Location本身也是一个向量。当然你也可以自己使用Lerp(Float)
在赋值到一个Vector的Z,传给New Location。不过没有必要。

Lerp方法,

UE蓝图示例----欢迎界面篇(TimeLine小球)_第9张图片

当传入的值为0时返回A,当传入的值是1时,返回B。(假设传入0-1)其实就是A-B线性数值之间,根据传入的值取中间的百分比。负数就是
负的百分比。Movement的曲线 开始是从1-0,那么这个Lerp的Z值就会从500-0变化。小球本身的因为继承的基类,他的值初始化的时候就是(0,0,0)

UE蓝图示例----欢迎界面篇(TimeLine小球)_第10张图片UE蓝图示例----欢迎界面篇(TimeLine小球)_第11张图片

这其中还牵扯一点世界坐标,和局部坐标的知识。Base的大小是Base相对于世界坐标(0,0,0)的位置,Ball的Location是相对于Base的大小
(不多赘述了)

那么因为传入的值为1,小球的Z就会先是500,也就是高空。然后逐渐下落至0,并在0的位置停留,在上升减速。

小球的缩放

UE蓝图示例----欢迎界面篇(TimeLine小球)_第12张图片
缩放也是同理,不过这里缩放的值肯定不能为0,上面展示Ball的位置时,有小球的Scale信息,小球的初始Scale是
0.5,那么这里也是0.5。小球在1.46S的缩放为-0.5,那么小球在AB片段之前会再减去一半的AB片段,也就是0.5 - 0.30.5 = 0.35。随后急剧增大到2,也就是再往后一个AB片段,也就是公式(A+V(B-A))中的,0.5+2*(0.8-0.5) = 1.1,其实就是 0.8+0.8-0.5 = 1.1,(当然这只是我方便心算所记忆的,具体返回值可以用公式计算)。

小球的特效 Impact

UE蓝图示例----欢迎界面篇(TimeLine小球)_第13张图片

Impact关键帧的时间点,会触发这个函数,Spawn Emitter at Location。在某个位置生成发射器。
ParticleSystem本事就是粒子发射器。
发射器模板,就选一个特效。

Location要获取世界坐标,而不能是相对坐标,因为我们并不想让小球产生的特效永远生成在(0,0,0)的位置。而应该获取小球在世界坐标
中的位置。
Rotation 和 Scale可以设定特效的旋转方向 和 大小
AutoDestory在粒子生命周期执行完毕后销毁。
Pooling Method对象池方法。
Auto Activate System(自动激活粒子系统)

综上,便结束了,蓝图的开端。

你可能感兴趣的:(UE,蓝图,学习笔记,ue4)