05_iTween_第四天--舞台效果

版权声明: https://blog.csdn.net/f980511/article/details/81416543

舞台效果结果如下:

有声音更带感csdn没视频所以喽,因为图片大小有限制所以预览的图有些不够完美建议下载该项目预览!

【实现策略】

[Tip]
    使用的iTween方法都为之前所学习过的,只有声音控制是例外

  1."FadeUp"按键控制歌曲的播放与暂停,利用AudioTo()

  2.当歌曲开始播放时将声音与高音在2秒之内缓慢的提高到1(最大)

  3.当歌曲开始暂停时将声音与高音在2秒之内缓慢的降低到0(最小)

  4.使用ColorTo()让方块1与方块2随着歌曲的振幅变化色彩与位置,而背景的透明度也随之改变。

  5.控制方块的变化色彩与背景的透明度的改变的渐进速录,使用fadedTime = .1f来进行约束。

【实现代码】

public class CameraFadeController : MonoBehaviour {

    public Texture2D cameraTexture;
    bool faded;
    float nowTime = 0f;
    float fadedTime = .1f;
    float[] spectrum = new float[256];

    public GameObject gameObject1;
    public GameObject gameObject2;
    AudioSource audioSource;

    void Start()
    {
        iTween.CameraFadeAdd(cameraTexture, 200);
        audioSource = GetComponent<AudioSource>();
    }
    private void Update()
    {
        if (nowTime >= fadedTime)
        {
            nowTime = 0;
            AudioListener.GetSpectrumData(spectrum, 0, FFTWindow.Rectangular);
            iTween.MoveTo(gameObject1, new Vector3(0, spectrum[10 - 1] * 100, 0), fadedTime);
            iTween.MoveTo(gameObject2, new Vector3(1f, spectrum[10] * 100, 0), fadedTime);
            iTween.CameraFadeTo(iTween.Hash("amount", spectrum[10] * 25, "time", fadedTime));
            Light();
        }
        nowTime += Time.deltaTime;

    }
    void Light()
    {
        Vector3 one = new Vector3(Mathf.RoundToInt(Random.Range(0, 2)), Mathf.RoundToInt(Random.Range(0, 2)), Mathf.RoundToInt(Random.Range(0, 2)));
        Vector3 two = new Vector3(Mathf.RoundToInt(Random.Range(0, 2)), Mathf.RoundToInt(Random.Range(0, 2)), Mathf.RoundToInt(Random.Range(0, 2)));
        Color test = new Color(spectrum[10] * one.x * 10000, spectrum[13] * one.y * 10000, spectrum[16] * one.z * 10000);
        Color test2 = new Color(spectrum[10] * two.x * 10000, spectrum[13] * two.y * 10000, spectrum[16] * two.z * 10000);
        iTween.ColorTo(gameObject1, test, fadedTime);
        iTween.ColorTo(gameObject2, test2, fadedTime);
    }

    void OnGUI()
    {
        if (!faded)
        {
            if (GUI.Button(new Rect(75, 151, 100, 50), "Fade Up!"))
            {
                iTween.CameraFadeTo(1, 2);
                iTween.AudioTo(gameObject, 0, 0, 2);
                faded = true;
            }
        }
        else
        {
            if (GUI.Button(new Rect(75, 151, 100, 50), "Fade Down!"))
            {
                iTween.CameraFadeTo(0, 2);
                iTween.AudioTo(gameObject, 1, 1, 2);
                faded = false;
            }
        }
    }
}
[Tip]
    随着时间的推移,改变游戏对象的颜色值。 如果附加 Light,GUIText 或 GUIText 组件,它们将成为动画的目标。
    ColorTo(GameObject target, Hashtable args)
    ColorTo(GameObject target, Color color, float time)

    音频源的音量和音调消失。 如果没有提供,则会使用附加到游戏对象的默认有声源(如果存在的话)。
    AudioTo(GameObject target, float volume, float pitch, float time)
    AudioTo(GameObject target, Hashtable args)

了解iTween的基本原理基本就不用把所有命令堆都学一遍,需要哪里看哪里才是刚需。想对iTween有个大概的了解请看我的另一篇博文--00_iTween_总天--iTween解析

【项目源码】

https://download.csdn.net/download/f980511/10583957

猜你喜欢

转载自blog.csdn.net/f980511/article/details/81416543