收取資源效果分為3個(gè)部分:
- 金幣等資源icon飛入資源欄(對(duì)資源icon做對(duì)象池)。github地址ResEffectProject:https://github.com/GeWenL/ResEffectProject
- 第一個(gè)資源icon飛到資源欄時(shí)彩倚,資源欄圖標(biāo)開始跳動(dòng);最后一個(gè)資源icon飛到資源欄蒿辙,資源欄圖標(biāo)停止跳動(dòng)邦尊。
-
資源進(jìn)度條嚎莉、數(shù)量增長(zhǎng)。
收取資源效果圖.png
收取資源效果預(yù)覽:
收取資源效果+資源欄圖標(biāo)跳動(dòng).gif
1. 金幣等資源icon飛入資源欄
github地址ResEffectProject桌硫,主要文件是ResEffect.cs
關(guān)鍵有5點(diǎn):
- 每個(gè)資源icon的生成有一定時(shí)間間隔夭咬,不是同時(shí)生成。
- 使用協(xié)程
StartCoroutine(OnAnimation(...))
铆隘。 - 配置生成所有數(shù)量的資源icon總消耗時(shí)間卓舵,計(jì)算每個(gè)資源icon生成間隔。
- 然后通過(guò)Time.deltaTime計(jì)算本幀生成幾個(gè)資源icon膀钠。
- 使用協(xié)程
if (_generateCount < count)
{
_generateTime += Time.deltaTime;
for (int i = 0; i < Mathf.Ceil(_generateTime / rate); i++) {
if (_generateCount < count)
{
// 生成資源icon
...
_generateCount++;
_generateTime -= rate;
}
else
{
break;
}
}
}
- 每個(gè)資源icon軌跡不能一致
通過(guò)一個(gè)控制點(diǎn)-生成資源圖標(biāo)后 擴(kuò)散 形成不一樣的軌跡ctrlPoints.Add(Random.insideUnitSphere * radius);
- 資源icon飛行有加速度
- 資源icon旋轉(zhuǎn)動(dòng)畫
- 使用對(duì)象池管理資源icon
效果gif:
收取資源-11個(gè)金幣.gif
收取資源-45個(gè)金幣.gif
2. 資源欄圖標(biāo)跳動(dòng)效果控制
通過(guò)ResEffect.cs文件中的Play函數(shù)參數(shù) System.Action<int> onFinish控制掏湾;
-
參數(shù)value==0,表示第一個(gè)資源icon飛到資源欄
-- lua self.ResIcon[eType].transform:DOScale(Vector3(1.1, 1.1, 1.1), 0.2):SetEase(Ease.OutCubic):SetLoops(-1, Tweening.LoopType.Restart)
-
參數(shù)value==1,表示最后一個(gè)資源icon飛到資源欄
-- lua DOTween.Kill(self.ResIcon[eType].transform)
ResEffect.cs -Play函數(shù):
/// <summary>
/// 播放特效
/// </summary>
/// <param name="type">類型</param>
/// <param name="source">起點(diǎn)坐標(biāo)-世界坐標(biāo)</param>
/// <param name="target">終點(diǎn)坐標(biāo)-世界坐標(biāo)</param>
/// <param name="count">粒子數(shù)量</param>
/// <param name="onFinish">完成后回調(diào)</param>
public void Play(int type, Vector3 source, Vector3 target, int count, System.Action<int> onFinish)
{
}
// 調(diào)用播放特效Play函數(shù) 在PlayAnim.cs文件
resEffect.Play (0, startImg.position, endImg.position, Random.Range(3, 100), (int value)=>{
if (value == 0)
{
Debug.Log("======>第一個(gè)資源icon飛到資源欄");
}
else if (value == 1)
{
Debug.Log("======> 最后一個(gè)資源icon飛到資源欄");
}
});
3. 資源進(jìn)度條、數(shù)量增長(zhǎng)
效果簡(jiǎn)單肿嘲,主要與資源欄圖標(biāo)跳動(dòng)效果一樣融击, 通過(guò)System.Action<int> onFinish控制;