unity 實現閃電特效

以前嘗試過用trail實現閃電特效,效果並不理想:計算量大、視覺尷尬。工具

因此後來改用序列幀來實現。動畫

step1.準備素材this

所需工具:spa

  AfterEffect [PhotoShop]code

步驟:orm

  1.打開AEblog

  2.新建Comp,咱們選擇512x1024大小隊列

  3.新建Solidip

  4.新建Advanced Lightning資源

  5.選中主幹衰退

  6.點擊衰退前的時鐘按鈕,使它變成動畫

  7.在時間軸調整閃電衰退參數

  8.添加到渲染隊列,設置格式爲PNG序列,設置顏色模式爲A+RGB

  9.渲染

  [10.ps中微調效果]

extra:

  若是想實現更復雜的閃電特效,能夠用JavaScript編寫腳本控制參數。

step2.編寫C#腳本

所需工具:

  IDE unity

步驟:

  1.新建cs腳本

public class SerialAnim : MonoBehaviour {
    public string filesName;
    public Texture2D[] textures;
    public Material target;
    public float fps = 30;

    private float _spf;
    private float _timeRemain;
    private int _index = 0;
    // Use this for initialization
    void Start () {
        if (filesName.Length > 0) {
            string[] subs = filesName.Split(',');
            int iFrom = int.Parse(subs[1]);
            int iTo = int.Parse(subs[2]);
            for(int i = iFrom;i<=iTo;i++){
                textures[i-iFrom] = Resources.Load(string.Format(subs[0],i),typeof(Texture2D)) as Texture2D;
                print (string.Format(subs[0],i));
            }
        }
        _spf = 1 / fps;
        target.mainTexture = textures[_index];
    }
    
    // Update is called once per frame
    void Update () {
        var dt = Time.deltaTime;
        _timeRemain += dt;
        while (_timeRemain>_spf) {
            _index = (_index+1)%textures.GetLength(0);

            target.mainTexture = textures[_index];
            _timeRemain -= _spf;
        }
    }
}

step3.管理資源

所需工具:

  unity

步驟:

  1.把素材添加到Resources/Textures

  2.腳本File Name鍵入:Textures/lightning_{0:0#},0,12

  [也能夠一張一張的加入到Textures列表裏]

The End.

相關文章
相關標籤/搜索