一、創建粒子特效游戲物體
二、修改粒子系統屬性
1. 基礎屬性
? ? ? ? (1)修改發射粒子持續時間(Duration)為3s
? ? ? ? (2)取消勾選循環(Looping)
? ? ? ? (2)修改粒子存在時間(Start Lifetime)為0.5~1之間的隨機值
? ? ? ? (3)修改粒子初始速度(Start Speed)為0.6~1.5之間的隨機值
? ? ? ? (4)修改粒子初始尺寸(Start Size)為0.7~1之間的隨機值
? ? ? ? (5)修改粒子初始旋轉角度(Start Rotation)為0~360之間的隨機值
2. 發射器(Emission)
????????(1)設置發射粒子速度(Rate over Time)為0(即不發射粒子)
????????(2)添加爆發(Burst),Time為0,Count為20
3. 發射器形狀(Shape)
? ? ? ? (1)設置形狀(Shape)為Circle
? ? ? ? (2)設置旋轉角度(Rotation)在x軸方向為0
? ? ? ? (3)設置半徑為(Radius)0.4
? ? ? ? (4)設置模式(Mode)為Burst Spread(爆炸擴散)
4. 粒子速度(Velocity over Lifetime)
? ? ? ? (1)設置速度更改器(Speed Modifier)為Curve,并編輯速度曲線
5. 粒子尺寸(Size over Lifetime)
? ? ? ? (1)編輯粒子尺寸(Size)曲線(與速度曲線相似,可直接復制)
6. 粒子旋轉(Rotation over Lifetime)
? ? ? ? (1)設置角速度(Angular Velocity)為90
7. 粒子紋理動畫(Texture Sheet Animation)
????????(1)添加粒子精靈圖片
三、創建拾取特效預制體
四、拾取草莓時播放特效
1. 編輯草莓腳本:
? ? ? ? (1)創建拾取特效預制體
public class Strawberry : MonoBehaviour {// 創建拾取特效預制體public GameObject pickUpEffectParticlePrefab;
}
? ? ? ? (2)?在上一章中已經寫了一個刪除粒子特效的方法。為了提高代碼的復用性,可以新建一個工具類,把刪除粒子特效的方法移動到Tool類中,使子彈腳本和草莓腳本都可以調用刪除粒子特效的方法(注意:這里的deleteEffectParticle方法是公開、靜態的)
public class Tool : MonoBehaviour
{// 在1s后刪除粒子特效public static async Task deleteEffectParticle(GameObject EffectParticle, float delay){// 等待1sawait Task.Delay(1000);// 刪除粒子特效Destroy(EffectParticle);}
}
? ? ? ? (3)修改子彈腳本中的deleteHitEffectParticle方法,調用Tool類的deleteEffectParticle方法
public class Bullet : MonoBehaviour
{// 擊中敵人private void OnCollisionEnter2D(Collision2D collision){Enemy enemy = collision.gameObject.GetComponent<Enemy>();if(enemy != null) {enemy.changeHealthPoint(-25);GameObject hitEffectParticle = Instantiate(hitEffectParticlePrefab, transform.position, Quaternion.identity);// 調用Tool類中的deleteEffectParticle方法刪除粒子特效Tool.deleteEffectParticle(hitEffectParticle, 1);}Destroy(gameObject);}}
? ? ? ? (4)同理,在草莓腳本中調用Tool類的deleteEffectParticle方法
public class Strawberry : MonoBehaviour
{private void OnTriggerEnter2D(Collider2D collision) {Ruby ruby = collision.GetComponent<Ruby>();if(ruby != null) {if(ruby.healthPoint < ruby.maxHealthPoint) {ruby.changeHealthPoint(25);//創建拾取特效預制體GameObject pickUpEffectParticle = Instantiate(pickUpEffectParticlePrefab, transform.position, Quaternion.identity);// 調用Tool類中的deleteEffectParticle方法刪除粒子特效Tool.deleteEffectParticle(pickUpEffectParticle, 1);// 刪除草莓游戲物體Destroy(gameObject);}}}}
2.?為草莓預制體添加拾取粒子特效
?最終效果如下圖所示:
? ? ? ? 本章完。感謝閱讀!