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圣典中文脚本 Unity3D圣典中文脚本 Unity3D圣典中文脚本
Unity3D Point light 灯光开关代码 Posted on 2013年03月25日 by U3d / Unity3D脚本/插件/被围观 252 次
Unity3D圣典中文脚本 chm
Unity3D圣典中文脚本,unity开发必备神器,方便快捷的了解unity开发各项API,函数等等
在Unity3D中实现克隆脚本 Posted on 2013年03月10日 by U3d / Unity3D脚本/插件/被围观 235 次 在Unity中实现克
这是Unity3d的脚本大总结,很多很有用的脚本,包括js以及c#,还有一些操作方法。
三本 Unity圣典之中文脚本手册3.42,Unity圣典 中文用户手册,Unity3D圣典中文脚本
unity圣典离线中文脚本手册,chm格式,Unity3D圣典中文脚本.chm,3D游戏引擎技术剖析、3D游戏引擎渲染内核架构及其技术、OpenGL核心概念扫盲、Unity3D圣典中文脚本。
unity3d UV动画脚本,可以调节贴图的UV动画 X Y 的移动和速度都可以调整
Unity3D脚本:如何调用更改其他脚本中的变量 Posted on 2013年02月24日 by U3d / Unity3D脚本/插件/被围观 274 次 在
Unity3D脚本:更改脚本和类名,且不破坏现有脚本引用的方法 Posted on 2013年02月01日 by U3d / Unity3D脚本/插件/被围观
Unity3D脚本:Unity3D游戏开发解决重复实例化脚本 Posted on 2013年01月22日 by U3d / Unity3D脚本/插件/被围观 2
Unity3D透明度脚本 Posted on 2013年02月20日 by U3d / Unity3D脚本/插件/被围观 300 次 Unity3D透明度脚本如
unity3d插件 脚本 图像识别 OpenCV for Unity3D 2.0.5 OpenCV3.1 支持unity5.0以上
Unity3D脚本:随时间改变光照强度1
Unity 3D游戏引擎脚本入门,可以看教程结合图解一步一步来建构自己的游戏,能够让新手尽快入门,即使没有编程基础也可以轻松开发游戏,值得好好学习一下。
//当controller处在空中间,grounded为false,即跳动和行走都无效///鼠标控制视角///// if (Input.GetMouseButt
Unity3D脚本:删除组件的几种方式 Posted on 2013年02月07日 by U3d / Unity3D脚本/插件/被围观 324 次 在Unity