plne funkcni data transfer
This commit is contained in:
83
Assets/Scripts/ArrowSequence.cs
Normal file
83
Assets/Scripts/ArrowSequence.cs
Normal file
@@ -0,0 +1,83 @@
|
||||
using System.Collections;
|
||||
using UnityEngine;
|
||||
|
||||
public class ArrowSequence : MonoBehaviour
|
||||
{
|
||||
[Header("Šipky")]
|
||||
public GameObject[] arrows;
|
||||
|
||||
[Header("Časování")]
|
||||
public float fadeInDuration = 0.3f;
|
||||
public float visibleDuration = 0.5f;
|
||||
public float fadeOutDuration = 0.3f;
|
||||
public float delayBetween = 0.1f;
|
||||
|
||||
void Start()
|
||||
{
|
||||
foreach (var arrow in arrows)
|
||||
SetAlpha(arrow, 0f);
|
||||
|
||||
StartCoroutine(PlayLoop());
|
||||
}
|
||||
|
||||
IEnumerator PlayLoop()
|
||||
{
|
||||
float singleArrow = fadeInDuration + visibleDuration + fadeOutDuration;
|
||||
float fullCycle = arrows.Length * delayBetween + singleArrow;
|
||||
float restartAt = fullCycle / 2f;
|
||||
|
||||
while (true)
|
||||
{
|
||||
StartCoroutine(PlaySequence());
|
||||
yield return new WaitForSeconds(restartAt);
|
||||
}
|
||||
}
|
||||
|
||||
IEnumerator PlaySequence()
|
||||
{
|
||||
foreach (var arrow in arrows)
|
||||
{
|
||||
StartCoroutine(AnimateArrow(arrow));
|
||||
yield return new WaitForSeconds(delayBetween);
|
||||
}
|
||||
}
|
||||
|
||||
IEnumerator AnimateArrow(GameObject arrow)
|
||||
{
|
||||
yield return StartCoroutine(Fade(arrow, 0f, 1f, fadeInDuration));
|
||||
yield return new WaitForSeconds(visibleDuration);
|
||||
yield return StartCoroutine(Fade(arrow, 1f, 0f, fadeOutDuration));
|
||||
}
|
||||
|
||||
IEnumerator Fade(GameObject obj, float from, float to, float duration)
|
||||
{
|
||||
float elapsed = 0f;
|
||||
while (elapsed < duration)
|
||||
{
|
||||
elapsed += Time.deltaTime;
|
||||
float t = Mathf.SmoothStep(0f, 1f, elapsed / duration);
|
||||
SetAlpha(obj, Mathf.Lerp(from, to, t));
|
||||
yield return null;
|
||||
}
|
||||
SetAlpha(obj, to);
|
||||
}
|
||||
|
||||
void SetAlpha(GameObject obj, float alpha)
|
||||
{
|
||||
var images = obj.GetComponentsInChildren<UnityEngine.UI.Image>(true);
|
||||
foreach (var img in images)
|
||||
{
|
||||
Color c = img.color;
|
||||
c.a = alpha;
|
||||
img.color = c;
|
||||
}
|
||||
|
||||
var renderers = obj.GetComponentsInChildren<SpriteRenderer>(true);
|
||||
foreach (var sr in renderers)
|
||||
{
|
||||
Color c = sr.color;
|
||||
c.a = alpha;
|
||||
sr.color = c;
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user