| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374 |
- using System.Collections.Generic;
- using UnityEngine;
- using System.Collections;
- public class FreezeBehaviour : MonoBehaviour
- {
- public Material iceMaterial;
- public bool isFrozen;
- public float FreezeTime = 5;
- private Material oldMaterial;
- // private bool isCanSetMaterial = true;
- private float cutoff;
- private FrozenState frozenState = FrozenState.Default;
- // Use this for initialization
- private void Start()
- {
- if(iceMaterial == null) Debug.Log("FreezeBehaviour can't fing Ice material");
- oldMaterial = GetComponent<Renderer>().materials[0];
- if (iceMaterial!=null)
- iceMaterial.SetFloat("_Cutoff", 0);
- }
- // Update is called once per frame
- private void Update()
- {
- if (isFrozen) frozenState = FrozenState.LoadMaterial;
- else if(frozenState!=FrozenState.Default) frozenState = FrozenState.UpdateMaterialUnFreeze;
- if (frozenState==FrozenState.LoadMaterial) LoadMaterial();
- if (frozenState==FrozenState.UpdateMaterialFreeze) UpdateMaterialFreeze();
- if (frozenState == FrozenState.UpdateMaterialUnFreeze) UpdateMaterialUnFreeze();
- }
- private void LoadMaterial()
- {
- // isCanSetMaterial = false;
- var materials = new Material[2];
- materials[0] = oldMaterial;
- materials[1] = iceMaterial;
- GetComponent<Renderer>().materials = materials;
- frozenState = FrozenState.UpdateMaterialFreeze;
- }
- private void UpdateMaterialFreeze()
- {
- var time = Time.deltaTime / FreezeTime;
- if (cutoff + time <= 1) {
- cutoff += time;
- iceMaterial.SetFloat("_Cutoff", cutoff);
- }
- else frozenState = FrozenState.Frozen;
- }
- private void UpdateMaterialUnFreeze()
- {
- var time = Time.deltaTime / FreezeTime;
- if (cutoff-time > 0) {
- cutoff -= time;
- iceMaterial.SetFloat("_Cutoff", cutoff);
- }
- else frozenState = FrozenState.Default;
- }
- enum FrozenState
- {
- Default,
- LoadMaterial,
- UpdateMaterialFreeze,
- UpdateMaterialUnFreeze,
- Frozen
- }
- }
|