码迷,mamicode.com
首页 > 编程语言 > 详细

unity shader——特效与音乐相结合

时间:2015-05-23 18:23:37      阅读:236      评论:0      收藏:0      [点我收藏+]

标签:

特效与音乐的结合,也并没有太大难度,特效部分提供一些可控接口,音乐部分提供波谱数值即可。

第一步非常好实现,国内这块儿的资料还是比较多的。

第二步看起来难,实际上过来人点一点,就透亮了。

在unity中,不需要再实现获取即时音乐数据之类麻烦的底层代码了,使用这个函数:

技术分享(unity圣典,能看懂英文部分尽量看英文,汉化估计是直接拿软件翻过来的)

这个函数的用法是在每个 UPDATE 函数内部取样,它会自动从当前播放到的位置取,具体参数设置可以参照unity圣典。

百说不如一做,代码放一下:

using UnityEngine;
using System.Collections;

public class lightController : MonoBehaviour {

    public Renderer light1, light2, light3, light4;

    public float dumpX=0.3f, dumpY=0.3f, dumpZ=0.3f;

    // 采样宽度
    public int sampWidth = 128;
    public float scaleAmount = 4;


    private float[] specTrum;


    // Use this for initialization
    void Start () {

    }
    
    // Update is called once per frame
    void Update () {

        specTrum = audio.GetSpectrumData(sampWidth, 0, FFTWindow.BlackmanHarris);

        float totalValue = 0;
        int i = 0;
        while (i < sampWidth)
        {
            totalValue = totalValue + specTrum[i];
            i++;
        }

        dumpZ = totalValue*scaleAmount;

//        light1.material.SetFloat ("_DampZ", dumpZ);
//        light1.material.SetFloat ("_DampX", dumpX);
        light1.material.SetFloat ("_DampY", dumpY);

//        light2.material.SetFloat ("_DampZ", dumpZ);
//        light2.material.SetFloat ("_DampX", dumpX);
        light2.material.SetFloat ("_DampY", dumpY);

//        light3.material.SetFloat ("_DampZ", dumpZ);
//        light3.material.SetFloat ("_DampX", dumpX);
        light3.material.SetFloat ("_DampY", dumpY);

//        light4.material.SetFloat ("_DampZ", dumpZ);
//        light4.material.SetFloat ("_DampX", dumpX);
        light4.material.SetFloat ("_DampY", dumpY);
    }
}

关于shader的内容,可以参照这篇:
http://www.cnblogs.com/SecretMan001/p/4521437.html

OK了,看过代码之后你就会明白了,答案如此简单。

共勉!

unity shader——特效与音乐相结合

标签:

原文地址:http://www.cnblogs.com/SecretMan001/p/4524621.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!