粒子系統(tǒng)介紹
- 什么是粒子系統(tǒng)?
- 粒子系統(tǒng)是由總體具有相同的表現(xiàn)規(guī)律片迅,個(gè)體卻隨機(jī)表現(xiàn)出不同的特征的大量顯示元素構(gòu)成的集合。
- 粒子定義有三要素
- 群體性:粒子系統(tǒng)是由“大量顯示元素”構(gòu)成的(例如雪秽荤、雨仔戈、一團(tuán)霧等等)
- 統(tǒng)一性:粒子系統(tǒng)的每個(gè)元素具有相同的表現(xiàn)規(guī)律(例如下雨、下雪赏淌,方向都是從上向下)
- 隨機(jī)性:粒子系統(tǒng)的每個(gè)元素又隨機(jī)表現(xiàn)出不同特征(例如下雪踩寇,每個(gè)雪花下落的速度會(huì)有不同,大小會(huì)有不同六水、方向也會(huì)有略微的不同)
粒子系統(tǒng)應(yīng)用場(chǎng)景
- 影視行業(yè)
- 目前我們經(jīng)嘲乘铮看的大片,比如沙塵暴掷贾、暴風(fēng)雨睛榄、暴雪、煙花 等等想帅,很多都是粒子特效做出來的场靴。很逼真,而且相比真實(shí)世界中去實(shí)拍港准,成本要低很多
- 游戲中
- 爆炸旨剥、雨、雪叉趣、霧、煙花等等该押。都是粒子系統(tǒng)實(shí)現(xiàn)
- 應(yīng)用中
- 主播房間右下角粒子動(dòng)畫
- 雪花/下雨/煙花等效果
- QQ生日快樂一堆表情的跳動(dòng)
iOS粒子動(dòng)畫的使用
- 步驟
- 創(chuàng)建發(fā)射器
- 創(chuàng)建粒子, 設(shè)置粒子屬性
- swift核心代碼
// 1.創(chuàng)建發(fā)射器
let emitter = CAEmitterLayer()
// 2.設(shè)置發(fā)射器的位置
emitter.emitterPosition = point
// 3.開啟三維效果
emitter.preservesDepth = true
// 4.創(chuàng)建例子, 并且設(shè)置例子相關(guān)的屬性
var cells = [CAEmitterCell]()
for i in 0..<10 {
// 4.1.創(chuàng)建例子Cell
let cell = CAEmitterCell()
// 4.2.設(shè)置粒子速度
cell.velocity = 150
cell.velocityRange = 100
// 4.3.設(shè)置例子的大小
cell.scale = 0.7
cell.scaleRange = 0.3
// 4.4.設(shè)置粒子方向
cell.emissionLongitude = CGFloat(-Double.pi/2)
cell.emissionRange = CGFloat(Double.pi/2 / 6)
// 4.5.設(shè)置例子的存活時(shí)間
cell.lifetime = 3
cell.lifetimeRange = 1.5
// 4.6.設(shè)置粒子旋轉(zhuǎn)
cell.spin = CGFloat(Double.pi/2)
cell.spinRange = CGFloat(Double.pi/2 / 2)
// 4.6.設(shè)置例子每秒彈出的個(gè)數(shù)
cell.birthRate = 2
// 4.7.設(shè)置粒子展示的圖片
cell.contents = UIImage(named: "good\(i)_30x30")?.cgImage
// 4.8.添加到數(shù)組中
cells.append(cell)
}
// 5.將粒子設(shè)置到發(fā)射器中
emitter.emitterCells = cells
// 6.將發(fā)射器的layer添加到父layer中
view.layer.addSublayer(emitter)
粒子動(dòng)畫效果展示
粒子動(dòng)畫.gif
源碼
GitHub地址:ParticleAnimationDemo