Синтаксис:
Используется csharp
//Лучше всего данный скрипт использовать на камере игрока.
//Created by breNn0r-
//--------------------------------------------------------
using UnityEngine;
using System.Collections;
[RequireComponent(typeof (AudioSource))] // Добавляем компонент AudioSource
public class Thunder : MonoBehaviour
{
private float _time; // Время для скрипта
private int _thunderCount; // Это будет отвечать за кол-во вспышек
public Light Sun; // Солнце (Direction Light с включеными тенями!)
public float minRandomTime, maxRandomTime;// Мин. и Макс. значения времени для рандома.
public AudioClip[] Sounds = new AudioClip[3];// Звуки грома.
void Awake ()
{
if (Sun == null)
Debug.LogError("Add Direction Light!/Добавь Солнце!");
if (Sounds.Length == 0)
Debug.LogWarning("Add Thunder Sounds/Добавь звуки грома");
if (minRandomTime <= 0)
minRandomTime = 20;
if (maxRandomTime <= 0)
maxRandomTime = 40;
_time = maxRandomTime;// время которое считает скрипт
Sun.intensity = 0;// убераем интенсивность света
}
void Update ()
{
if (_time > 0) // Если время больше 0 сек.
{
_time -= Time.deltaTime; // Отсчитывает время
}
else // Иначе
{
_time = Random.Range (minRandomTime, maxRandomTime); // Выбрасываем новое время
_thunderCount = Random.Range (0, 3); // Выбрасываем кол-во вспышек.
switch (_thunderCount) // Проверка на кол-во
{
case 0: // Если вспышка 1
ThunderOn (); // Включаем свет
Invoke ("ThunderSoundOn", 0.8f); // Через 0.8 сек запускаем звук.
break; // Выход.
case 1: // Если вспышки 2
ThunderOn (); // Включаем свет
Invoke ("ThunderOn", 0.2f); // Через 0.2 сек снова включаем свет! (отключение читать ниже)
Invoke ("ThunderSoundOn", 1.0f);// Через 0.8 сек запускаем звук.
break; // Выход.
case 2: // Если вспышки 3
ThunderOn (); //
Invoke ("ThunderOn", 0.2f);// Через 0.2 сек снова включаем свет!
Invoke ("ThunderOn", 0.4f);// Через 0.4 сек снова включаем свет!
Invoke ("ThunderSoundOn", 1.2f);// Через 1.2 сек запускаем звук.
break; // Догадайся.
}
}
}
void ThunderOn () // Включение света
{
Sun.intensity = 1; // Интенсивность света = 1
Invoke ("ThunderOff", 0.1f); // Отключение света через 0.1 сек.
}
void ThunderOff () // Отключение света
{
Sun.intensity = 0; // Интенсивность света = 0
}
void ThunderSoundOn () // Включение звука
{
if (audio.isPlaying) // Если AudioSource занят,
audio.Stop (); // Останавливаем воспроизведение.
audio.PlayOneShot(Sounds[_thunderCount]); // Проиграть один раз (равный кол-ву вспышек)
}
}
//Created by breNn0r-
//--------------------------------------------------------
using UnityEngine;
using System.Collections;
[RequireComponent(typeof (AudioSource))] // Добавляем компонент AudioSource
public class Thunder : MonoBehaviour
{
private float _time; // Время для скрипта
private int _thunderCount; // Это будет отвечать за кол-во вспышек
public Light Sun; // Солнце (Direction Light с включеными тенями!)
public float minRandomTime, maxRandomTime;// Мин. и Макс. значения времени для рандома.
public AudioClip[] Sounds = new AudioClip[3];// Звуки грома.
void Awake ()
{
if (Sun == null)
Debug.LogError("Add Direction Light!/Добавь Солнце!");
if (Sounds.Length == 0)
Debug.LogWarning("Add Thunder Sounds/Добавь звуки грома");
if (minRandomTime <= 0)
minRandomTime = 20;
if (maxRandomTime <= 0)
maxRandomTime = 40;
_time = maxRandomTime;// время которое считает скрипт
Sun.intensity = 0;// убераем интенсивность света
}
void Update ()
{
if (_time > 0) // Если время больше 0 сек.
{
_time -= Time.deltaTime; // Отсчитывает время
}
else // Иначе
{
_time = Random.Range (minRandomTime, maxRandomTime); // Выбрасываем новое время
_thunderCount = Random.Range (0, 3); // Выбрасываем кол-во вспышек.
switch (_thunderCount) // Проверка на кол-во
{
case 0: // Если вспышка 1
ThunderOn (); // Включаем свет
Invoke ("ThunderSoundOn", 0.8f); // Через 0.8 сек запускаем звук.
break; // Выход.
case 1: // Если вспышки 2
ThunderOn (); // Включаем свет
Invoke ("ThunderOn", 0.2f); // Через 0.2 сек снова включаем свет! (отключение читать ниже)
Invoke ("ThunderSoundOn", 1.0f);// Через 0.8 сек запускаем звук.
break; // Выход.
case 2: // Если вспышки 3
ThunderOn (); //
Invoke ("ThunderOn", 0.2f);// Через 0.2 сек снова включаем свет!
Invoke ("ThunderOn", 0.4f);// Через 0.4 сек снова включаем свет!
Invoke ("ThunderSoundOn", 1.2f);// Через 1.2 сек запускаем звук.
break; // Догадайся.
}
}
}
void ThunderOn () // Включение света
{
Sun.intensity = 1; // Интенсивность света = 1
Invoke ("ThunderOff", 0.1f); // Отключение света через 0.1 сек.
}
void ThunderOff () // Отключение света
{
Sun.intensity = 0; // Интенсивность света = 0
}
void ThunderSoundOn () // Включение звука
{
if (audio.isPlaying) // Если AudioSource занят,
audio.Stop (); // Останавливаем воспроизведение.
audio.PlayOneShot(Sounds[_thunderCount]); // Проиграть один раз (равный кол-ву вспышек)
}
}