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 闪烁灯光脚本是 Unity3D 游戏引擎中的一种特殊效果脚本,用于实现闪烁灯光的效果。本脚本使用了 C# 语言编写,使用 UnityEngine 和 System.Collections 命名空间。 标题解释 ...
在Unity3D游戏引擎中,实现物体闪烁效果可以用于各种场景,例如模拟霓虹灯、跑马灯或LED灯光效果,这些效果能增加游戏的视觉吸引力。本篇将详细介绍如何在Unity3D中创建物体闪烁效果,以及相关的核心概念和技术。 ...
在Unity3D中实现"万圣节尖叫夜"的短视频是一项综合了3D建模、动画、编程和特效的工作。这个项目将展示Unity的强大功能,包括场景构建、光照设计、材质应用、粒子系统以及C#脚本控制。下面将详细阐述实现这个项目的...
模型可能还包括动画,比如灯光闪烁、装饰品摇摆等,以增加动态效果。 雪人是另一个传统圣诞主题元素,模型可能包括头部、身体、帽子、围巾等部件。雪人的材质可能使用了特殊的雪材质,模拟出冰冷、明亮的效果。...
5. **交互设计**:Unity3d提供C#脚本系统,开发者可以通过编写脚本来实现用户交互。例如,当玩家接近特定物体时触发事件,如播放音效、显示信息或者改变场景状态。此外,Unity3D的物理引擎可以模拟物体碰撞,使场景...
在"lightPack.unitypackage"这个资源包中,很可能包含了各种预设的灯光设置、光照贴图以及相关的脚本示例,供开发者直接导入到项目中使用或作为参考。开发者可以研究这些资源,了解它们是如何实现不同灯光效果的,并...
其中,"054.unitypackage"是Unity3D特有的资源包格式,它集成了模型、纹理、动画、脚本等多种元素,方便开发者导入到项目中直接使用。 Unity3D中的游戏场景设计通常涵盖了以下几个关键知识点: 1. **场景构建**:...
在"Unity3d UV动画角本"这个主题中,我们将探讨如何使用C#脚本来创建和控制UV动画。首先,让我们理解什么是UV坐标。在3D建模中,每个三角面都有一个二维的UV坐标系,用于映射3D模型到2D纹理空间,使纹理能够正确地...
总的来说,Unity3D实现警报灯效果主要涉及Light组件的使用、自定义脚本编程以及动画效果的控制。通过合理的参数配置和逻辑设计,可以创建出具有警示功能的动态灯光效果,提升游戏的沉浸感和用户体验。在实际开发中,...
此外,场景内还包含了一些预设的动画效果,例如设备的动态操作、灯光的闪烁变化等,以增加场景的动态感和真实感。 光照系统是Unity中的关键部分,对于营造气氛至关重要。在这个插件中,预设的光照设置可能包括了...
5. **动画与特效**:通过Unity3D的动画系统,可以为家具、人物或其他元素添加动态效果,如窗帘飘动、灯光闪烁。同时,粒子系统可以创建烟雾、火焰、水波等视觉特效。 6. **性能优化**:为了在不同设备上流畅运行,...
在Unity3D中,开发者可以将多个3D对象(包括模型、灯光、摄像机等)组织成层次结构的Scene(场景)。万圣节南瓜模型可以作为游戏场景的一部分,与其他元素(如建筑物、人物、道具)一起构建出一个富有节日氛围的游戏...
此外,还可以通过MIDI控制器消息改变音色、调整音量,甚至控制其他视觉效果,如灯光闪烁。 为了运行这个"midiTest"项目,你需要确保你的Android设备支持USB主机模式,并且有一个兼容的MIDI键盘通过USB线连接。在...
Unity 3D Shader,简称为Unity Shader,是基于Unity引擎的着色语言(ShaderLab)编写的脚本,用于定制图形渲染。ShaderLab是一种简化版的语言,它允许开发者使用类似于Cg/HLSL的语法来编写Shader,但语法更为简洁。...
在Unity引擎中构建一个高仿真的汽车模型是一项技术性极强的工作,涉及到多个方面的知识,包括3D建模、物理模拟、脚本编程以及用户界面设计。以下将详细阐述这个项目中的关键知识点: 1. **Unity引擎基础**:Unity是...
对于舞台灯光效果,FLA文件可能包含了精心设计的3D动画元素,比如旋转的光束、闪烁的灯光或者动态的光影变化,这些都是通过ActionScript编程实现的。 在使用Flash制作3D效果时,可以利用内置的3D旋转和缩放功能,...
6. **编程语言和框架**:现代的舞厅效果可能会使用Unity或Unreal Engine等游戏引擎来实现,它们支持C#、JavaScript(通过Unity的UnityScript或C#)或C++编写脚本,通过这些脚本可以定制复杂的光照逻辑和粒子行为。...
总的来说,“Unity王者荣耀场景模型”是Unity引擎在游戏开发领域的一次精彩展示,它充分体现了Unity在3D建模、材质、灯光、特效等方面的优势,为游戏开发者提供了一个学习和参考的宝贵资源。通过深入研究这个项目,...
在Unity3D游戏开发中,"切场景,淡入淡出"是一种常用的技术,用于平滑地过渡游戏的各个部分,提升玩家的游戏体验。这种技术不仅适用于场景间的切换,还可以应用到角色、UI元素或者过场动画等。下面将详细阐述如何在...
Unity是一款强大的跨平台游戏开发引擎,被广泛应用于创建2D和3D的互动内容,包括电子游戏、模拟器以及可视化应用。在Unity中,自发光材质(Emission Material)是实现物体表面发出光线效果的关键技术,它允许物体...