unity 震动脚本_闪烁灯光脚本

这篇博客分享了在Unity中实现灯光闪烁和震动效果的脚本代码,包括CampFire和Fluorescent两种风格,涉及光照强度和范围的调整,支持随机和正弦波动模式。直接使用提供的代码即可在Unity项目中测试这些效果。
摘要由CSDN通过智能技术生成

在这里代码比较多。直接为大家贴出代码了

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;

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;

}

}

}

直接拷贝过去。赶快测试下吧

(责任编辑:脚印)

免责声明:Unity之家部分内容来源于互联网,如有侵权,请联系我们,本站将立即进行处理。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值