栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 游戏开发 > 其他

Unity 实现相机视角慢慢变黑的效果(VR)

其他 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Unity 实现相机视角慢慢变黑的效果(VR)

一、在相机下新建一个Canvas,添加Image 和CanvasGroup 组件

二、通过代码控制CanvasGroup 组件中Alpha值

以下函数要放在Update中执行。

第一种写法(判断条件为Alpha 0-1的值)

    private float Alpha;
    private float AlphaSpeed = 1.5f; //Alpha值渐变的时间
    /// 
    /// 控制Alpha值增加
    /// 
    /// 
    public void AlphaControl(GameObject _mask)
    {
        if (_mask != null)
        {
            _mask.SetActive(true);

            Alpha += Time.deltaTime * 1 / AlphaSpeed;
            _mask.GetComponent().alpha = Alpha;
           
            if (Alpha >= 0.95f) playAnimation = PlayAnimation.EnterGame;

        }
    }

第二种写法(判断条件为持续时间)

    /// 
    /// 屏幕遮罩
    /// 
    public CanvasGroup screenMask; 
     /// 
    /// 遮罩的Alpha
    /// 
    private float maskAlpha;
    /// 
    /// 遮罩的Alpha持续时间
    /// 
    private float maskAlphaDuration = 5f;
     /// 
    /// 游戏结束画面逐渐变黑并退出游戏场景
    /// 
    private void GameOver()
    {
        if (isGameOver)
        {
            maskAlpha += Time.deltaTime;
            screenMask.alpha = maskAlpha / maskAlphaDuration;
            if (maskAlpha >= maskAlphaDuration)
            {
                maskAlpha = 0;
#if UNITY_EDITOR
                UnityEditor.EditorApplication.isPlaying = false;
#else
                Application.Quit();
#endif
            }
        }
    }

三、 通过Image组件实现相机的遮罩效果

注意:如果CanvasGroup和Image同时存在,需将CanvasGroup的Alpha值改为1,再进行控制Image的Alpha值。

     /// 
    /// 屏幕遮罩
    /// 
    public Image screenMask; 
     /// 
    /// 遮罩的Alpha
    /// 
    private float maskAlpha;
    /// 
    /// 遮罩的Alpha持续时间
    /// 
    private float maskAlphaDuration = 5f;    
    /// 
    /// 游戏结束画面逐渐变黑并退出游戏场景
    /// 
    private void GameOver()
    {
        if (isGameOver)
        {
            var r = screenMask.color.r;
            var g = screenMask.color.g;
            var b = screenMask.color.b;

            maskAlpha += Time.deltaTime;
            screenMask.color = new Color(r, g, b, maskAlpha / maskAlphaDuration);
            if (maskAlpha >= maskAlphaDuration)
            {
                maskAlpha = 0;
#if UNITY_EDITOR
                UnityEditor.EditorApplication.isPlaying = false;
#else
                Application.Quit();
#endif
            }
        }
    }

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/901291.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号