rabidus-test/Assets/Amazing Assets/Advanced Dissolve/Example Scenes/Tutorial Scenes/Files/Scripts/AnimateCutoutAndDestroy.cs

53 lines
2.0 KiB
C#

using UnityEngine;
namespace AmazingAssets.AdvancedDissolve.ExampleScripts
{
public class AnimateCutoutAndDestroy : MonoBehaviour
{
public Material material;
float clipValue = 0;
float dissolveSpeed = 0.1f;
private void Start()
{
clipValue = 0;
dissolveSpeed = Random.Range(0.15f, 0.35f);
//Enable dissolve 'State' keyword for this material
AmazingAssets.AdvancedDissolve.AdvancedDissolveKeywords.SetKeyword(material, AdvancedDissolveKeywords.State.Enabled, true);
//Make sure initial clip value is 0
AmazingAssets.AdvancedDissolve.AdvancedDissolveProperties.Cutout.Standard.UpdateLocalProperty(material, AdvancedDissolveProperties.Cutout.Standard.Property.Clip, 0);
//Assign random edge color
AmazingAssets.AdvancedDissolve.AdvancedDissolveProperties.Edge.Base.UpdateLocalProperty(material, AdvancedDissolveProperties.Edge.Base.Property.Color, Random.ColorHSV(0f, 1f, 1, 1, 1, 1));
//Randomize intensity
AmazingAssets.AdvancedDissolve.AdvancedDissolveProperties.Edge.Base.UpdateLocalProperty(material, AdvancedDissolveProperties.Edge.Base.Property.ColorIntensity, Random.Range(4f, 7f));
//Set edge shape
AmazingAssets.AdvancedDissolve.AdvancedDissolveProperties.Edge.Base.UpdateLocalProperty(material, AdvancedDissolveProperties.Edge.Base.Property.Shape, AdvancedDissolveProperties.Edge.Base.Shape.Smoother);
}
void Update()
{
//Update 'Clip' property inside material
AmazingAssets.AdvancedDissolve.AdvancedDissolveProperties.Cutout.Standard.UpdateLocalProperty(material, AdvancedDissolveProperties.Cutout.Standard.Property.Clip, clipValue);
//Animate clip value
clipValue += Time.deltaTime * dissolveSpeed;
//Distroy after full dissolve
if(clipValue >= 1)
DestroyImmediate(this.gameObject);
}
}
}