02_iTween_第二天--贴图动画

实现贴图动画的效果结果如下:

【实现策略】

1.动画为两个页面这里分开来实现PresentationScreen页面、TitleScreen页面

2.PresentationScreen页面有

    (1)whiteDiagonalGradient背景贴图--在(2)(3)开始出去时使用FadeFrom()逐渐隐藏

    (2)iTweenLogoGT贴图--使用MoveFrom()滑动进入后进出

    (3)presentsTextGT展示文字贴图--滑动进入后进出

    (4)PresentationScreen页面隐藏,TitleScreen页面激活并使用ScaleFrom()从大到小,ColorFrom()变色

2.TitleScreen页面有

    (1)onePlayerButton贴图、twoPlayerButton贴图、titleText贴图 滑动进入

    (2)splatTexture 背景贴图从大到小变色显示、titleTextBlock贴图FadeFrom()逐渐显示

    (3)GetMouseButtonDown检测到鼠标点击后CameraFadeAdd()为摄像机(99depth渲染层级)加入一张黑色贴图其会自行将这张贴图alpha设为0;之后再CameraFadeTo手动将这张贴图的alpha值过度到1不透明,后重新开始整个流程

【项目结构】

【源代码】

public class TitleScreen : MonoBehaviour {
    public GameObject onePlayerButton;
    public GameObject splatTexture;
    public GameObject titleText;
    public GameObject titleTextBlock;
    public GameObject twoPlayerButton;
    public GameObject presentationScreen;
    public Texture2D blackScreen;

    void OnEnable()
    {
        iTween.ColorFrom(splatTexture, iTween.Hash("color", new Color(1, 1, 0, 0)));
        iTween.ScaleFrom(splatTexture, iTween.Hash("scale", new Vector3(2, 2, 0), "time", .6));
        iTween.FadeFrom(titleTextBlock, iTween.Hash("alpha", 0, "time", .8, "delay", .4));
        iTween.MoveFrom(titleText, iTween.Hash("x", -.8, "time", .8, "delay", .4));
        iTween.MoveFrom(onePlayerButton, iTween.Hash("y", -.5, "delay", 1.4));
        iTween.MoveFrom(twoPlayerButton, iTween.Hash("y", -.5, "delay", 1.5));
    }

    IEnumerator SwitchToPresentationScreen()
    {
        iTween.CameraFadeAdd(blackScreen, 99);
        iTween.CameraFadeTo(1, 2);
        yield return new WaitForSeconds(2);
        iTween.CameraFadeDestroy();
        gameObject.SetActive(false);
        presentationScreen.SetActive(true);
    }

    void Update()
    {
        if (Input.GetMouseButtonDown(0))
        {
            StartCoroutine(SwitchToPresentationScreen());
        }
    }
}
public class PresentationScreen : MonoBehaviour {

    public GameObject iTweenLogoGT;
    public GameObject presentsTextGT;
    public GameObject whiteDiagonalGradient;
    public GameObject titleScreen;

    void OnEnable()
    {
        iTweenLogoGT.transform.position = new Vector3(.5f, .5f, .5f);
        presentsTextGT.transform.position = new Vector3(.5f, .5f, .5f);
        whiteDiagonalGradient.GetComponent<GUITexture>().color = new Color(.5f, .5f, .5f, .5f);

        iTween.FadeFrom(whiteDiagonalGradient, iTween.Hash("alpha", 0, "time", .6, "delay", 1));
        iTween.MoveFrom(whiteDiagonalGradient, iTween.Hash("position", new Vector3(1.3f, 1.3f, 0), "time", .6, "delay", 1));
        iTween.MoveFrom(iTweenLogoGT, iTween.Hash("x", -.4, "time", .6, "delay", 1.2));
        iTween.MoveFrom(presentsTextGT, iTween.Hash("x", 1.2, "time", .6, "delay", 1.4));

        iTween.MoveTo(presentsTextGT, iTween.Hash("x", -.2, "time", .6, "delay", 2.5, "easetype", "easeincubic"));
        iTween.MoveTo(iTweenLogoGT, iTween.Hash("x", 1.5, "time", .6, "delay", 2.6, "easetype", "easeincubic"));
        iTween.FadeTo(whiteDiagonalGradient, iTween.Hash("alpha", 0, "time", .6, "delay", 2.8, "easetype", "easeincubic", "oncomplete", "SwitchToTitleScreen", "oncompletetarget", gameObject));
    }

    void SwitchToTitleScreen()
    {
        gameObject.SetActive(false);
        titleScreen.SetActive(true);
    }
}
[Tip]
        主要方法解释:
    立即更改游戏对象的 alpha 值,然后随着时间的推移将它返回给提供的 alpha。 如果附加 Light,GUIText 或 GUIText 组件,它将成为动画的目标。
    FadeFrom(GameObject target, Hashtable args)
    FadeFrom(GameObject target, float alpha, float time)

    立即更改游戏对象的颜色值,然后随着时间的推移将它们返回给提供的属性。 如果附加 Light,GUIText 或 GUIText 组件,它将成为动画的目标。
    ColorFrom(GameObject target, Hashtable args)
    ColorFrom(GameObject target, Color color, float time)
    
    随着时间的推移,它会立即改变游戏对象的比例,然后返回到它的起始比例。
    ScaleFrom(GameObject target, Vector3 scale, float time)
    ScaleFrom(GameObject target, Hashtable args)
    
    将游戏对象的位置立即更改为提供的目标,然后随着时间的推移将它返回到它的起始位置。
    MoveFrom(GameObject target, Vector3 position, float time)
    MoveFrom(GameObject target, Hashtable args)
    
    在提供的深度创建一个可以用来模拟相机褪色的游戏对象(如果不存在的话)。 如果你不选择提供一个 Texture2D 一个黑色的 CameraFade。 如果你不提供深度,默认深度为999999将被使用。
    CameraFadeAdd()
    CameraFadeAdd(Texture2D texture)
    CameraFadeAdd(Texture2D texture, int depth)
    
    随着时间的推移,相机的(透明度)会逐渐消失到amount值(比例)。
    CameraFadeTo(float amount, float time)
    CameraFadeTo(Hashtable args)
    
    移除和摧毁一个存在的用来模拟相机褪色的游戏对象
    CameraFadeDestroy()

【项目文件】

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

猜你喜欢

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