You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
84 lines
2.6 KiB
84 lines
2.6 KiB
4 years ago
|
using UnityEngine;
|
||
|
using System.Collections;
|
||
|
|
||
|
[AddComponentMenu("azure[Sky]/Cloud Animation")]
|
||
|
[ExecuteInEditMode]
|
||
|
public class AzureSkyCloudAnimation : MonoBehaviour
|
||
|
{
|
||
|
public Texture2D[] clouds;
|
||
|
private Texture2D c1;
|
||
|
private Texture2D c2;
|
||
|
public int iniCloud;
|
||
|
private int currentCloud;
|
||
|
public float animationSpeed;
|
||
|
private float lerp;
|
||
|
|
||
|
private AzureSky_Controller skyController;
|
||
|
//=======================================================================================================
|
||
|
//-------------------------------------------------------------------------------------------------------
|
||
|
// Use this for initialization
|
||
|
void Start()
|
||
|
{
|
||
|
skyController = GetComponent<AzureSky_Controller> ();
|
||
|
if (skyController != null) {
|
||
|
currentCloud = iniCloud;
|
||
|
if (clouds.Length > 1) {
|
||
|
skyController.Sky_Material.SetTexture ("_Cloud1", clouds [currentCloud]);
|
||
|
skyController.Sky_Material.SetTexture ("_Cloud2", clouds [currentCloud + 1]);
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
//-------------------------------------------------------------------------------------------------------
|
||
|
// Update is called once per frame
|
||
|
void Update()
|
||
|
{
|
||
|
if (skyController != null) {
|
||
|
if (clouds.Length == 120) {
|
||
|
lerp += animationSpeed * Time.deltaTime;
|
||
|
if (lerp >= 1.0f) {
|
||
|
if (currentCloud < 119) {
|
||
|
currentCloud += 1;
|
||
|
} else {
|
||
|
currentCloud = 0;
|
||
|
}
|
||
|
|
||
|
|
||
|
if (currentCloud <= 119) {
|
||
|
skyController.Sky_Material.SetTexture ("_Cloud1", clouds [currentCloud]);
|
||
|
} else {
|
||
|
skyController.Sky_Material.SetTexture ("_Cloud1", clouds [0]);
|
||
|
}
|
||
|
|
||
|
if (currentCloud <= 118) {
|
||
|
skyController.Sky_Material.SetTexture ("_Cloud2", clouds [currentCloud + 1]);
|
||
|
} else {
|
||
|
skyController.Sky_Material.SetTexture ("_Cloud2", clouds [0]);
|
||
|
}
|
||
|
|
||
|
lerp = 0.0f;
|
||
|
}
|
||
|
skyController.Sky_Material.SetFloat ("_CloudLerp", lerp);
|
||
|
}
|
||
|
}
|
||
|
//-------------------------------------------------------------------------------------------------------
|
||
|
// No animation in the editor
|
||
|
#if UNITY_EDITOR
|
||
|
skyController = GetComponent<AzureSky_Controller> ();
|
||
|
if (skyController != null){
|
||
|
if (clouds.Length > 0)
|
||
|
{
|
||
|
if (!Application.isPlaying) {
|
||
|
skyController.Sky_Material.SetTexture ("_Cloud1", clouds [iniCloud]);
|
||
|
skyController.Sky_Material.SetTexture ("_Cloud2", clouds [iniCloud]);
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
#endif
|
||
|
}
|
||
|
//=======================================================================================================
|
||
|
//-------------------------------------------------------------------------------------------------------
|
||
|
public void setCloudSpeed(float speed)
|
||
|
{
|
||
|
animationSpeed = speed;
|
||
|
}
|
||
|
}
|