`

[转载]Unity3d闪烁灯光脚本

 
阅读更多
using UnityEngine;  

using System.Collections;  

[RequireComponent( typeof( Light ) )]  

public class flickeringLight : MonoBehaviour  

{  

    // Flickering Styles   

    public enum flickerinLightStyles { CampFire = 0, Fluorescent = 1 };  

    public flickerinLightStyles flickeringLightStyle = flickerinLightStyles.CampFire;  

    // Campfire Methods   

    public enum campfireMethods { Intensity = 0, Range = 1, Both = 2 };  

    public campfireMethods campfireMethod = campfireMethods.Intensity;  

    // Intensity Styles   

    public enum campfireIntesityStyles { Sine = 0, Random = 1 };  

    public campfireIntesityStyles campfireIntesityStyle = campfireIntesityStyles.Random;  

    // Range Styles   

    public enum campfireRangeStyles { Sine = 0, Random = 1 };  

    public campfireRangeStyles campfireRangeStyle = campfireRangeStyles.Random;  

    // Base Intensity Value   

    public float CampfireIntensityBaseValue = 0.5f;  

    // Intensity Flickering Power   

    public float CampfireIntensityFlickerValue = 0.1f;  

    // Base Range Value   

    public float CampfireRangeBaseValue = 10.0f;  

    // Range Flickering Power   

    public float CampfireRangeFlickerValue = 2.0f;  

      

    // If Style is Sine   

    private float CampfireSineCycleIntensity = 0.0f;  

    private float CampfireSineCycleRange = 0.0f;  

    // "Glow" Speeds   

    public float CampfireSineCycleIntensitySpeed = 5.0f;  

    public float CampfireSineCycleRangeSpeed = 5.0f;  

    public float FluorescentFlickerMin = 0.4f;  

    public float FluorescentFlickerMax = 0.5f;  

    public float FluorescentFlicerPercent = 0.95f;  

    // NOT IMPLEMENTED YET !!!!   

    public bool FluorescentFlickerPlaySound = false;  

    public AudioClip FluorescentFlickerAudioClip;  

    // ------------------------   

  

    // Use this for initialization   

    void Start () {  

      

    }  

      

    // Update is called once per frame   

    void Update () {  

        switch( flickeringLightStyle )  

        {  

            // If Flickering Style is Campfire   

            case flickerinLightStyles.CampFire:  

                // If campfire method is Intesity OR Both   

                if( campfireMethod == campfireMethods.Intensity || campfireMethod == campfireMethods.Both )  

                {  

                    // If Intensity style is Sine   

                    if( campfireIntesityStyle == campfireIntesityStyles.Sine )  

                    {  

                        // Cycle the Campfire angle   

                        CampfireSineCycleIntensity += CampfireSineCycleIntensitySpeed;  

                        if( CampfireSineCycleIntensity > 360.0f ) CampfireSineCycleIntensity = 0.0f;  

                        // Base + Values   

                        light.intensity = CampfireIntensityBaseValue + ( ( Mathf.Sin( CampfireSineCycleIntensity * Mathf.Deg2Rad ) * ( CampfireIntensityFlickerValue / 2.0f ) ) + ( CampfireIntensityFlickerValue / 2.0f ) );  

                    }  

                    else light.intensity = CampfireIntensityBaseValue + Random.Range( 0.0f, CampfireIntensityFlickerValue );  

                }  

                // If campfire method is Range OR Both   

                if( campfireMethod == campfireMethods.Range || campfireMethod == campfireMethods.Both )  

                {  

                    // If Range style is Sine   

                    if( campfireRangeStyle == campfireRangeStyles.Sine )  

                    {  

                        // Cycle the Campfire angle   

                        CampfireSineCycleRange += CampfireSineCycleRangeSpeed;  

                        if( CampfireSineCycleRange > 360.0f ) CampfireSineCycleRange = 0.0f;  

                        // Base + Values   

                        light.range = CampfireRangeBaseValue + ( ( Mathf.Sin( CampfireSineCycleRange * Mathf.Deg2Rad ) * ( CampfireSineCycleRange / 2.0f ) ) + ( CampfireSineCycleRange / 2.0f ) );  

                    }  

                    else light.range = CampfireRangeBaseValue + Random.Range( 0.0f, CampfireRangeFlickerValue );  

                }  

                break;  

            // If Flickering Style is Fluorescent   

            case flickerinLightStyles.Fluorescent:  

                if( Random.Range( 0.0f, 1.0f ) > FluorescentFlicerPercent )  

                {  

                    light.intensity = FluorescentFlickerMin;  

                    // Check Audio - NOT IMPLEMENTED YET   

                    if( FluorescentFlickerPlaySound )  

                    {  

                    }  

                }  

                else light.intensity = FluorescentFlickerMax;  

                break;  

            default:  

                // You should not be here.   

                break;  

        }  

      

    }  

}  
分享到:
评论

相关推荐

    Unity3D脚本:Unity3D闪烁灯光脚本1

    Unity3D 闪烁灯光脚本详解 Unity3D 闪烁灯光脚本是 Unity3D 游戏引擎中的一种特殊效果脚本,用于实现闪烁灯光的效果。本脚本使用了 C# 语言编写,使用 UnityEngine 和 System.Collections 命名空间。 标题解释 ...

    Unity3D实现物体闪烁效果

    在Unity3D游戏引擎中,实现物体闪烁效果可以用于各种场景,例如模拟霓虹灯、跑马灯或LED灯光效果,这些效果能增加游戏的视觉吸引力。本篇将详细介绍如何在Unity3D中创建物体闪烁效果,以及相关的核心概念和技术。 ...

    Unity3D实现万圣节

    在Unity3D中实现"万圣节尖叫夜"的短视频是一项综合了3D建模、动画、编程和特效的工作。这个项目将展示Unity的强大功能,包括场景构建、光照设计、材质应用、粒子系统以及C#脚本控制。下面将详细阐述实现这个项目的...

    Unity3D模型资源包 Unity圣诞节日用品包 圣诞树 雪人 礼品盒

    模型可能还包括动画,比如灯光闪烁、装饰品摇摆等,以增加动态效果。 雪人是另一个传统圣诞主题元素,模型可能包括头部、身体、帽子、围巾等部件。雪人的材质可能使用了特殊的雪材质,模拟出冰冷、明亮的效果。...

    基于unity开发Unity3d做的一个万圣节小场景.rar

    5. **交互设计**:Unity3d提供C#脚本系统,开发者可以通过编写脚本来实现用户交互。例如,当玩家接近特定物体时触发事件,如播放音效、显示信息或者改变场景状态。此外,Unity3D的物理引擎可以模拟物体碰撞,使场景...

    恐怖游戏灯光效果烘托-UnityHorrorGame

    在"lightPack.unitypackage"这个资源包中,很可能包含了各种预设的灯光设置、光照贴图以及相关的脚本示例,供开发者直接导入到项目中使用或作为参考。开发者可以研究这些资源,了解它们是如何实现不同灯光效果的,并...

    unity武侠场景.rar

    其中,"054.unitypackage"是Unity3D特有的资源包格式,它集成了模型、纹理、动画、脚本等多种元素,方便开发者导入到项目中直接使用。 Unity3D中的游戏场景设计通常涵盖了以下几个关键知识点: 1. **场景构建**:...

    Unity3d UV动画角本

    在"Unity3d UV动画角本"这个主题中,我们将探讨如何使用C#脚本来创建和控制UV动画。首先,让我们理解什么是UV坐标。在3D建模中,每个三角面都有一个二维的UV坐标系,用于映射3D模型到2D纹理空间,使纹理能够正确地...

    Unity3D实现警报灯

    总的来说,Unity3D实现警报灯效果主要涉及Light组件的使用、自定义脚本编程以及动画效果的控制。通过合理的参数配置和逻辑设计,可以创建出具有警示功能的动态灯光效果,提升游戏的沉浸感和用户体验。在实际开发中,...

    unity科幻实验室场景3D Showroom Level Kit Vol 1.zip

    此外,场景内还包含了一些预设的动画效果,例如设备的动态操作、灯光的闪烁变化等,以增加场景的动态感和真实感。 光照系统是Unity中的关键部分,对于营造气氛至关重要。在这个插件中,预设的光照设置可能包括了...

    现代室内漫游

    5. **动画与特效**:通过Unity3D的动画系统,可以为家具、人物或其他元素添加动态效果,如窗帘飘动、灯光闪烁。同时,粒子系统可以创建烟雾、火焰、水波等视觉特效。 6. **性能优化**:为了在不同设备上流畅运行,...

    万圣节南瓜3D模型文件

    在Unity3D中,开发者可以将多个3D对象(包括模型、灯光、摄像机等)组织成层次结构的Scene(场景)。万圣节南瓜模型可以作为游戏场景的一部分,与其他元素(如建筑物、人物、道具)一起构建出一个富有节日氛围的游戏...

    unity做的安卓usb连接midi钢琴demo(附有安卓代码)

    此外,还可以通过MIDI控制器消息改变音色、调整音量,甚至控制其他视觉效果,如灯光闪烁。 为了运行这个"midiTest"项目,你需要确保你的Android设备支持USB主机模式,并且有一个兼容的MIDI键盘通过USB线连接。在...

    浅墨大神shader-Unity-Shader-master.zip

    Unity 3D Shader,简称为Unity Shader,是基于Unity引擎的着色语言(ShaderLab)编写的脚本,用于定制图形渲染。ShaderLab是一种简化版的语言,它允许开发者使用类似于Cg/HLSL的语法来编写Shader,但语法更为简洁。...

    高仿真汽车(unity)

    在Unity引擎中构建一个高仿真的汽车模型是一项技术性极强的工作,涉及到多个方面的知识,包括3D建模、物理模拟、脚本编程以及用户界面设计。以下将详细阐述这个项目中的关键知识点: 1. **Unity引擎基础**:Unity是...

    舞台灯光效果 

    对于舞台灯光效果,FLA文件可能包含了精心设计的3D动画元素,比如旋转的光束、闪烁的灯光或者动态的光影变化,这些都是通过ActionScript编程实现的。 在使用Flash制作3D效果时,可以利用内置的3D旋转和缩放功能,...

    舞厅效果

    6. **编程语言和框架**:现代的舞厅效果可能会使用Unity或Unreal Engine等游戏引擎来实现,它们支持C#、JavaScript(通过Unity的UnityScript或C#)或C++编写脚本,通过这些脚本可以定制复杂的光照逻辑和粒子行为。...

    Unity王者荣耀场景模型

    总的来说,“Unity王者荣耀场景模型”是Unity引擎在游戏开发领域的一次精彩展示,它充分体现了Unity在3D建模、材质、灯光、特效等方面的优势,为游戏开发者提供了一个学习和参考的宝贵资源。通过深入研究这个项目,...

    切场景,淡入淡出.rar

    在Unity3D游戏开发中,"切场景,淡入淡出"是一种常用的技术,用于平滑地过渡游戏的各个部分,提升玩家的游戏体验。这种技术不仅适用于场景间的切换,还可以应用到角色、UI元素或者过场动画等。下面将详细阐述如何在...

    unity自发光材质.zip

    Unity是一款强大的跨平台游戏开发引擎,被广泛应用于创建2D和3D的互动内容,包括电子游戏、模拟器以及可视化应用。在Unity中,自发光材质(Emission Material)是实现物体表面发出光线效果的关键技术,它允许物体...

Global site tag (gtag.js) - Google Analytics