unity 實現閃電特效


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

所以后來改用序列幀來實現。

step1.准備素材

所需工具:

  AfterEffect [PhotoShop]

步驟:

  1.打開AE

  2.新建Comp,我們選擇512x1024大小

  3.新建Solid

  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.

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM