項目中經常會使用到粒子,比如做雨滴,拖尾特效等。
原理就是使用單張圖片,通過不斷的變換參數,來生成大量的不同參數的原圖片。
這節我們來學習laya的2d粒子,以及各個粒子參數的具體定義
首先,新建一個粒子文件
接下來,具體看下laya的2d粒子參數
1.常用
textureName:粒子元貼圖
textureCount:貼圖個數
maxPartices:最大粒子數
backColor:背景色
bg:背景貼圖
2.通用
duration:單個粒子持續時間 0~20 (單位:秒)
ageAddScale:粒子生存時間隨機比例 0~10,(如果大于0,某些粒子的持續時間會小于其他粒子,并具有隨機性)
emitterVelocitySensitivity:粒子速度敏感度 0~100 (需在自定義發射器中編碼設置)
3.尺寸設置
minStartSize:起始最小尺寸 0~100
maxStartSize:起始最大尺寸 0~100
minEndSize:結束最小尺寸 0~100
maxEndSize:結束最大尺寸 0~100
4.發射范圍
positionVariance
0:x范圍
1:y范圍
2:z范圍
5.重力模式參數
minHorizontalV:最小水平速度
maxHorizontalV:最大水平速度
minVerticalVelo:最小垂直速度
mVerticalVelo:最大垂直速度
endVelocity:結束速度比例
gravity
0:重力x
1:重力y
2:重力z
6.半徑模式參數
半徑參數
minRotateSpeed:最小旋轉速度
maxRotateSpeed:最大旋轉速度
minStartRadius:起始最小半徑 0~500
maxStartRadius:起始最大半徑 0~500
minEndRadius:結束最小半徑 0~500
maxEndRadius:結束最大半徑 0~500
開始弧度
minHorizontalStartRadian:最小水平弧度
maxHorizontalStartRadian:最大水平弧度
minVerticalStartRadian:最小垂直弧度
maxVerticalStartRadian:最大垂直弧度
結束弧度
useEndRadian:結束與起始弧度保持一致(false),使用結束弧度(true)
minHorizontalEndRadian:最小水平弧度
maxHorizontalEndRadian:最大水平弧度
minVerticalEndRadian:最小垂直弧度
maxVerticalEndRadian:最大垂直弧度
7.顏色變化參數
minStartColor:起始最小顏色
maxStartColor:起始最大顏色
minEndColor:結束最小顏色
maxEndColor:結束最大顏色
apha:透明度 0~1
red:紅色通道 0~1
green:綠色通道 0~1
blue:藍色通道 0~1
可以自行根據0~255的顏色值來換算比例
8.其他
blendState:混合模式,待調整,引擎中暫無BlendState抽象
colorComponentInter:RGBA整體插值(false),分量插值(true)
disableColor:使用上述自定義的顏色參數(false),使用元圖顏色數據(true)
9.使用粒子
通過加載粒子文件->獲取粒子發射器->發射粒子->播放粒子
private loadPartical()
{
Laya.loader.load("partical.part", Laya.Handler.create(this, this.onAssetsLoaded), null, Laya.Loader.JSON);
}
public onAssetsLoaded(settings: Laya.ParticleSetting): void {
var sp = new Laya.Particle2D(settings) as Laya.Particle2D;
//粒子發射器開始發射粒子
sp.emitter.start();
sp.play();
Laya.stage.addChild(sp);
sp.x = Laya.stage.width / 2;
sp.y = Laya.stage.height / 2;
}
從代碼中可以看出,2d粒子初始化的時候需要傳入粒子參數Laya.ParticleSetting,所以如果想要自己用代碼的方式創建粒子,只要手動寫一個粒子參數Laya.ParticleSetting即可,個人不推薦哈,畢竟可視化調節還是比較直觀方便。
10.自定義發射器
emitterType
如果有細心點的小伙伴,肯定發現了一個問題,那就是2d粒子的發射器沒法設置,默認為null,
然而查看引擎代碼,發現發射器類型有4種,"point","box","sphere","ring",點發射器、盒發射器、球發射器、環發射器,這個屬于3d粒子參數,后續會更新