欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

IOS动画效果源代码整理(粒子、雪花、火焰、河流、蒸汽)

程序员文章站 2023-12-18 23:53:04
学习神奇的粒子发射器,雪花纷纷落下的动画效果,就是通过caemitterlayer来实现的,这个layer还能创建火焰,河流,蒸汽的动画效果,常用于游戏开发。 cre...

学习神奇的粒子发射器,雪花纷纷落下的动画效果,就是通过caemitterlayer来实现的,这个layer还能创建火焰,河流,蒸汽的动画效果,常用于游戏开发。

creating your emitter layer

let rect = cgrect(x: 0.0, y: -70.0, width: view.bounds.width, height: 50.0)
let emitter = caemitterlayer()
emitter.backgroundcolor = uicolor.bluecolor().cgcolor
emitter.frame = rect
emitter.emittershape = kcaemitterlayerrectangle
view.layer.addsublayer(emitter)

代码创建了caemitterlayer,并设置了发射源形状emittershape。

有几个常用的emittershape:

kcaemitterlayerpoint:使所有粒子在同一点创建发射器的位置。这是一个很好的选择用于火花或烟花,比如,你可以创建一个火花效应,通过创建所有的粒子在同一点上,使它们在不同的方向飞,然后消失。

kcaemitterlayerline:所有粒子沿发射架顶部的顶部。这是一个用于瀑布效应的发射极的形状;水粒子出现在瀑布的顶部边缘。

kcaemitterlayerrectangle:创建粒子随机通过一个给定的矩形区域。

adding an emitter frame

前面是设置了layer frame,下面设置layer里面的emitter的frame

emitter.emitterposition = cgpoint(x: rect.width * 0.5, y: rect.height * 0.5)
emitter.emittersize = rect.size

代码设置了emitter中心点是layer的中心点,size和layer一样。

[]creating an emitter cell

现在,您已经配置了发射器的位置和大小,可以继续添加cell。 cell是表示一个粒子源的数据模型。是caemitterlayer一个单独的类,因为一个发射器可以包含一个或多个粒子。 例如,在一个爆米花动画,你可以有三种不同的细胞代表一个爆米花的不同状态:完全炸开,一半炸开和没有炸开:

let emittercell = caemittercell()
emittercell.contents = uiimage(named: "flake.png")!.cgimage
emittercell.birthrate = 20 
emittercell.lifetime = 3.5 
emitter.emittercells = [emittercell]

代码每一秒创建20个cell,每个cell有3.5s的生命周期,之后一些cell就会消失

[]controlling your particles

上面设置的cell不会动,需要给它个加速度

emittercell.xacceleration = 10.0
emittercell.yacceleration = 70.0

设置cell在x轴,y轴的加速度。

emittercell.velocity = 20.0 
// x-y平面的发射方向
// -m_pi_2 垂直向上
emittercell.emissionlongitude = cgfloat(-m_pi_2)

设置起始速度,发射的方向是通过emissionlongitude属性定义的。

[]adding randomness to your particles

emittercell.velocityrange = 200.0

设置其实速度的随机范围,每个粒子的速度将是一个随机值之间(20-200)= 180 ~(20 + 200)= 220。负初始速度的粒子不会向上飞,一旦出现在屏幕上,他们就会开始浮动。带正速度的粒子先飞起来,然后再浮。

emittercell.emissionrange = cgfloat(m_pi_2)

原来,你配置的所有粒子射直线上升(π/ 2角)作为他们的出现。上面这行代码表示为每个粒子随机选一个发射角度在(-π/2 + π/2)= 180度(-π/ 2 +π/2)= 0度之间。

[]changing particle color

设置你的粒子颜色

emittercell.color = uicolor(red: 0.9, green: 1.0, blue: 1.0, alpha: 1.0).cgcolor

还可以设置粒子的颜色rgb范围:

emittercell.redrange = 0.1
emittercell.greenrange = 0.1
emittercell.bluerange = 0.1

由于rgb最大为1.0,所以red是取值0.81.0,green:0.91.0,blue:0.9~1.0

[]randomizing particle appearance

之前的粒子都是一样大的,这里给粒子分配一个随机大小。

emittercell.scale = 0.8 
emittercell.scalerange = 0.8

设置粒子是原来的80%大小,随机范围是从0.0到1.6。

emittercell.scalespeed = -0.15

粒子每秒钟按15%的体积缩小。
还可以设置透明度

emittercell.alpharange = 0.75 
emittercell.alphaspeed = -0.15

透明度 0.25~1.0,每秒透明度减少15%。

上一篇:

下一篇: