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.

相关文章
相关标签/搜索