123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263 |
- using UnityEngine;
- using System.Collections;
- public class F3DWarpJumpTunnel : MonoBehaviour
- {
- private new Transform transform;
- private MeshRenderer meshRenderer;
- public float StartDelay, FadeDelay;
- public Vector3 ScaleTo;
- public float ScaleTime;
- public float ColorTime, ColorFadeTime;
- public float RotationSpeed;
- private bool grow = false;
- float alpha;
- int alphaID;
- void Awake()
- {
- transform = GetComponent<Transform>();
- meshRenderer = GetComponent<MeshRenderer>();
- alphaID = Shader.PropertyToID("_Alpha");
- }
- public void OnSpawned()
- {
- grow = false;
- meshRenderer.material.SetFloat(alphaID, 0);
- F3DTime.time.AddTimer(StartDelay, 1, ToggleGrow);
- F3DTime.time.AddTimer(FadeDelay, 1, ToggleGrow);
- transform.localScale = new Vector3(1f, 1f, 1f);
- transform.localRotation = transform.localRotation * Quaternion.Euler(0, 0, Random.Range(-360, 360));
- }
- void ToggleGrow()
- {
- grow = !grow;
- }
- // Update is called once per frame
- void Update()
- {
- transform.Rotate(0f, 0f, RotationSpeed * Time.deltaTime);
- if (grow)
- {
- transform.localScale = Vector3.Lerp(transform.localScale, ScaleTo, Time.deltaTime * ScaleTime);
- alpha = Mathf.Lerp(alpha, 1, Time.deltaTime * ColorTime);
- meshRenderer.material.SetFloat(alphaID, alpha);
- }
- else
- {
- alpha = Mathf.Lerp(alpha, 0, Time.deltaTime * ColorFadeTime);
- meshRenderer.material.SetFloat(alphaID, alpha);
- }
- }
- }
|